Предположим, что у меня есть таблица 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.