Как мне использовать T-SQL Group By

Я знаю , что нужно иметь (хотя я не знаю , почему) в GROUP BYположение о конце запроса SQL , который использует любые агрегатные функции , такие как count, sum, avgи т.д.:

SELECT count(userID), userName
FROM users
GROUP BY userName

Когда еще было GROUP BYбы полезно, и каковы последствия производительности?

5.08.2008 18:55:35
Обратите внимание, что GROUP BY не упорядочивает набор результатов. Если вам нужен конкретный заказ, добавьте также ORDER BY
David Gardiner 27.09.2011 05:21:18
Лучше сказать, что стандарт SQL не гарантирует какого-либо упорядочения при его использовании ... Но как реализовать группирование без упорядочения? Все реализации, которые я видел, используют какое-то упорядочение и почти всегда возвращают результаты в порядке побочного эффекта.
Stu 15.06.2018 07:54:17
5 ОТВЕТОВ
РЕШЕНИЕ

Чтобы получить количество виджетов из каждой категории виджетов, которая имеет более 5 виджетов, вы можете сделать это:

SELECT WidgetCategory, count(*)
FROM Widgets
GROUP BY WidgetCategory
HAVING count(*) > 5

Условие «иметь» - это то, о чем люди часто забывают, вместо этого они предпочитают получать все свои данные клиенту и повторять их там.

36
27.11.2012 13:33:37

Подсчет количества использованных тегов может быть примером Google:

SELECT TagName, Count(*)
AS TimesUsed
FROM Tags
GROUP BY TagName ORDER TimesUsed

Если вы просто хотите отличное значение тегов, я бы предпочел использовать это DISTINCTутверждение.

SELECT DISTINCT TagName
FROM Tags
ORDER BY TagName ASC
2
1.12.2016 18:16:24

GROUP BY также помогает, когда вы хотите создать отчет, который будет усреднять или суммировать кучу данных. Вы можете Сгруппировать по ID отдела и СУММЕ весь доход от продаж или AVG подсчитать объем продаж за каждый месяц.

0
5.08.2008 19:00:39

Group By принудительно заполняет весь набор перед возвратом записей (поскольку это неявная сортировка).

По этой причине (и многим другим) никогда не используйте Group By в подзапросе.

4
5.08.2008 19:01:10
Черт возьми, я думаю, что ты был единственным, кто ответил на вопрос «производительности» вопроса. +1
MickyD 9.05.2018 01:15:05

GROUP BY похож на DISTINCT в том, что он группирует несколько записей в одну.

В этом примере, заимствованном из http://www.devguru.com/technologies/t-sql/7080.asp , перечислены отдельные продукты в таблице «Продукты».

SELECT Product FROM Products GROUP BY Product

Product
-------------
Desktop
Laptop
Mouse
Network Card
Hard Drive
Software
Book
Accessory

Преимущество GROUP BY по сравнению с DISTINCT состоит в том, что он может предоставить вам детальный контроль при использовании с предложением HAVING.

SELECT Product, count(Product) as ProdCnt
FROM Products
GROUP BY Product
HAVING count(Product) > 2

Product      ProdCnt
--------------------
Desktop          10
Laptop            5
Mouse             3
Network Card      9
Software          6
14
19.08.2008 14:02:49