sql - example - html tags




Использование группы по нескольким столбцам (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) FROM (предложение используется для перечисления таблиц)

3) WHERE (предложение используется для фильтрации записей)

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

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

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

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

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

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

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

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

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

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

Я понимаю точку 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 есть три человека, которые делают ITB001, а два - в семестре 2. Оба человека, делающие MKB114, находятся в семестре 1, поэтому нет строка для семестра 2 (данные не входят в группу «MKB114, Semester 2»)

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





group-by