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

Я понимаю смысл 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

Когда вы используете «группу по» только в столбце темы; сказать:

select Subject, Count(*)
from Subject_Selection
group by Subject

Вы получите что-то вроде:

Subject    Count
------------------------------
ITB001     5
MKB114     2

.потому что есть 5 записей для ITB001 и 2 для MKB114.. Если бы мы «группировали по» двум столбцам:

select Subject, Semester, Count(*)
from Subject_Selection
group by Subject, Semester

мы бы получили это:

Subject    Semester   Count
------------------------------
ITB001     1          3
ITB001     2          2
MKB114     1          2

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

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

Комментарии (7)

Предложение 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. ИМЕЕТ (пункт используется в сочетании с пунктом GROUP BY to ограничить группы возвращаемых строк только теми, чье состояние ИСТИНА)

  6. ЗАКАЗ ПО (ключевое слово используется для сортировки набора результатов)

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

Совокупные функции:

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

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

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

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

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

Комментарии (3)