2017-01-25 5 views
1

Этот код:Сортировка результатов агрегатной функции

SELECT ProductID, COUNT(ProductID) AS Occurrences 
FROM OrderDetails 
Group By ProductID; 

моя попытка принять productIDs, которые происходят в таблице ORDERDETAILS, подсчитать, сколько заказов содержат этот продукт, а затем отсортировать PRODUCTID подсчитывает по убыванию. В терминах непрофессионала я хочу показать, какие продукты являются самыми популярными, показывая их счет в порядке убывания, чтобы продукты, которые «продали» больше всего, будут отображаться вверху. Проблема заключается в том, что когда я пытался использовать «Group by» с «Occurrences», он выплюнул ошибку, что я не могу использовать агрегированные функции с группой. Если я группирую по ProductID, он показывает подсчеты по всему месту, что не является самым полезным способом представления информации.

ответ

1

Это должны работы:

SELECT ProductID, COUNT(ProductID) AS Occurrences 
FROM OrderDetails 
Group By ProductID 
Order By COUNT(ProductID) DESC; 
1

То, что вы действительно хотите использовать, если вы хотите знать, популярность продуктов SUM не COUNT:

SELECT ProductID, 
     sum(Qty) AS Occurrences 
FROM OrderDetails 
Group By ProductID 
Order By sum(Qty) DESC; 

COUNT даст вам интересно Результаты. Или вы можете использовать подсчет таких заказов:

select ProductID 
     count(distinct OrderNumber) as NumberOfOrders 
from OrderDetails 
group by ProductID 
order by count(distinct OrderNumber) desc; 
+0

Единственное, что меня смутило, было использование «Qty». Я не знаю, используете ли вы его в качестве заполнителя для чего-то другого или чего-то еще, но в моем коде я бы использовал ProductID, потому что я хочу подсчитать (или суммировать) количество раз, когда каждый продукт появляется в таблице orderDetail. –

+0

@TophHughes - я использовал «Qty», потому что я не уверен, какой столбец вызывается в вашей таблице, но обычно у вас будет количество упорядоченного столбца в таблице «OrderDetails». Рассмотрим случай, когда продукт А заказывается 10 раз, а продукт В заказывается 5 раз, а один из заказов продукта В - для количества 12. Я бы счел продукт В более популярным. – Anand