Как работает GROUP BY?
Предположим, что у меня есть таблица Tab1
с атрибутами - a1
, a2
,... и т.д. Ни один из атрибутов не уникален.
Какова будет природа следующего запроса? Будет ли он возвращать одну строку всегда?
SELECT a1, a2, sum(a3) FROM Tab1 GROUP BY a1, a2
Ответы
Ответ 1
GROUP BY
возвращает одну строку для каждой уникальной комбинации полей GROUP BY
. Таким образом, в вашем примере каждая отдельная комбинация (a1, a2)
, встречающаяся в строках Tab1
, приводит к строке в запросе, представляющем группу строк с заданной комбинацией группы по значениям полей. Агрегатные функции, такие как SUM()
, вычисляются по членам каждой группы.
Ответ 2
GROUP BY
возвращает одну строку для каждой уникальной комбинации полей в предложении GROUP BY
. Чтобы обеспечить только одну строку, вам нужно будет использовать агрегатную функцию - COUNT
, SUM
, MAX
- без предложения GROUP BY
.
Ответ 3
GROUP BY
группирует все идентичные записи.
SELECT COUNT(ItemID), City
FROM Orders
GROUP BY City;
----------------------------------------
13 Sacrmento
23 Dallas
87 Los Angeles
5 Phoenix
Если вы не группируете City
, он просто отображает общее количество ItemID
.