Использование группировки по нескольким столбцам - PullRequest
910 голосов
/ 11 марта 2010

Я понимаю смысл GROUP BY x

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

Ответы [ 2 ]

1825 голосов
/ 11 марта 2010

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

... потому что есть 5 записей для ITB001 и 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

Это потому, что, когда мы группируем по двум столбцам, это говорит: "1030 *" Сгруппируйте их так, чтобы все те, у кого один и тот же предмет и семестр, были в одной группе, а затем вычислили все агрегатные функции (Количество, сумма, среднее и т. Д.) для каждой из этих групп ". В этом примере это демонстрируется тем фактом, что, когда мы их считаем, три человека делают ITB001 в 1-м семестре, а два делают в 2-м семестре. люди, делающие MKB114, находятся в 1 семестре, поэтому нет строки для 2 семестра (данные не вписываются в группу "MKB114, Semester 2")

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

22 голосов
/ 16 декабря 2016

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

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

Запомните этот заказ:

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

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

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

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

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

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

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

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

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...