#mysql #sql-order-by #mysql-workbench #distinct #inner-query
#mysql #sql-порядок-по #mysql-верстак #отчетливый #внутренний запрос
Вопрос:
В базе данных MySQL у меня есть
CustomerId productId modelNumber CAnWgsN0 C9407R 300 CAnWgsN0 C5861W 300 CAnWgsN0 C9407R 400 CAnWgsN0 C5861W 600 CAnWgsN0 C9407R 300 KAuK9nB K3150Z 100 KAuK9nB6 K3150Z 100
и я хочу, чтобы мой результат был таким
customerId productId modelNumber Count CAnWgsN0 C9407R 300 2 CAnWgsN0 C9407R 400 1 CAnWgsN0 C5861W 300 1 CAnWgsN0 C5861W 600 1 KAuK9nB6 K3150Z 100 2
Я пытаюсь выполнить этот запрос, но не получаю желаемого результата. Как я могу применить distinct к номеру модели, а затем сгруппировать по идентификатору продукта.
SELECT * FROM (SELECT customerId, productId, COUNT(modelNumber) As count, ROW_NUMBER() OVER (PARTITION BY modelNumber ORDER BY productId) AS RowNumber FROM customers) AS a WHERE a.RowNumber lt;=100 ;
Он возвращает только одну строку.Я тоже пробовал этот запрос, но безуспешно
SELECT productId, customerId, modelNumber, COUNT(modelNumber) AS count FROM customers WHERE modelNumber IN (SELECT DISTINCT modelNumber from customer ORDER BY productId);
Ответ №1:
Если я чего-то не упускаю, ты просто хочешь GROUP BY customerId, productId, modelNumber
WITH customers AS ( (SELECT 'CAnWgsN0' AS customerId, 'C9407R' AS productId, 300 AS modelNumber ) UNION ALL (SELECT 'CAnWgsN0', 'C5861W', 300) UNION ALL (SELECT 'CAnWgsN0', 'C9407R', 400) UNION ALL (SELECT 'CAnWgsN0', 'C5861W', 600) UNION ALL (SELECT 'CAnWgsN0', 'C9407R', 300) UNION ALL (SELECT 'KAuK9nB6', 'K3150Z', 100) UNION ALL (SELECT 'KAuK9nB6', 'K3150Z', 100)) SELECT customerId, productId, modelNumber, COUNT(*) AS count FROM customers GROUP BY customerId, productId, modelNumber;