Использование группы по нескольким столбцам

Я понимаю суть GROUP BY x

Но как работает GROUP BY x, y и что это значит?

Ответ 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")

Надеюсь, это имеет смысл.

Ответ 2

Предложение GROUP BY используется вместе с агрегатными функциями для группировки набора результатов по одному или нескольким столбцам. например:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;

Запомните этот порядок:

1) SELECT (используется для выбора данных из базы данных)

2) ОТ (предложение используется для перечисления таблиц)

3) ГДЕ (пункт используется для фильтрации записей)

4) GROUP BY (предложение можно использовать в операторе SELECT для сбора данных по нескольким записям и группировки результатов по одному или нескольким столбцам)

5) HAVING (предложение используется в сочетании с предложением GROUP BY, чтобы ограничить группы возвращаемых строк только теми, чье условие TRUE)

6) ORDER BY (ключевое слово используется для сортировки набора результатов)

Вы можете использовать все это, если вы используете агрегатные функции, и это порядок, в котором они должны быть установлены, в противном случае вы можете получить ошибку.

Агрегатные функции:

MIN возвращает наименьшее значение в данном столбце

SUM возвращает сумму числовых значений в данном столбце

AVG возвращает среднее значение данного столбца

COUNT возвращает общее количество значений в данном столбце

COUNT (*) возвращает количество строк в таблице