Я понимаю суть GROUP BY x
Но как работает GROUP BY x, y
и что это значит?
Я понимаю суть GROUP BY x
Но как работает GROUP BY x, y
и что это значит?
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")
Надеюсь, это имеет смысл.
Предложение 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 (*) возвращает количество строк в таблице