Ответ 1
Group By X
означает поместить все те, у которых одинаковое значение для X в одной группе.
Group By X, Y
означает поместить все те, у которых одинаковые значения для X и Y в одной группе.
Чтобы проиллюстрировать, используя пример, скажем, что у нас есть следующая таблица, что касается того, кто посещает какой предмет в университете:
Table: Subject_Selection
Subject Semester Attendee
---------------------------------
ITB001 1 John
ITB001 1 Bob
ITB001 1 Mickey
ITB001 2 Jenny
ITB001 2 James
MKB114 1 John
MKB114 1 Erica
Если вы используете group by
только для столбца темы; говорят:
select Subject, Count(*)
from Subject_Selection
group by Subject
Вы получите что-то вроде:
Subject Count
------------------------------
ITB001 5
MKB114 2
... потому что для ITB001 есть 5 записей и 2 для MKB114
Если бы мы были group by
двумя столбцами:
select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester
мы получили бы это:
Subject Semester Count
------------------------------
ITB001 1 3
ITB001 2 2
MKB114 1 2
Это связано с тем, что, когда мы группируем по два столбца, он говорит "Группировать их так, чтобы все те, у кого одни и те же тезисы и семестр были в одной группе, а затем вычисляли все агрегатные функции (Count, Sum, Average и т.д.) для каждой из этих групп. В этом примере это демонстрируется тем фактом, что, когда мы их подсчитываем, в семестре 1 есть люди из three, которые делают ITB001, а два делают это в семестре 2. Оба людей, делающих MKB114, находятся в семестре 1, поэтому нет строки для семестра 2 (данные не вписываются в группу" MKB114, Semester 2")
Надеюсь, это имеет смысл.