Я понимаю смысл 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
... потому что есть 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
Это происходит потому, что когда мы группируем по двум столбцам, это говорит: «Сгруппируйте их так, чтобы все те, у кого один и тот же предмет и семестр, были в одной группе, а затем вычислили все агрегатные функции (Count, Sum, Average и т. Д. ) для каждой из этих групп " . В этом примере это демонстрируется тем фактом, что, когда мы их подсчитываем, три человека делают ITB001 в 1-м семестре, а два - в семестре 2. Оба из MKB114 находятся в 1-м семестре, поэтому нет строка за семестр 2 (данные не вписываются в группу "MKB114, семестр 2")
Надеюсь, это имеет смысл.
GROUP BY A,B
это то же самое, что и GROUP BY B,A
?
GROUP BY a, b
и GROUP BY a AND b
поскольку во втором списке перечислены только сгруппированные элементы с одинаковым содержанием и без «подгрупп». В этом случае вывод будет таким же, как первый.
Предложение 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 (*) возвращает количество строк в таблице