Я розумію сенс "ГРУПИ НА Х".
Але як працює "ГРУПУВАННЯ по х, у" і що це означає?
"Згрупувати по Х" означає помістити в одну групу всі ті, що мають однакове значення для Х.
"Згрупувати по 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
...тому що для ITB001 є 5 записів, а для MKB114 - 2
Якби ми "згрупували" по двох стовпчиках:
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 семестру (немає даних, що підпадають під групу &quo ;MKB114, семестр 2&quo ;).
Сподіваємось, це має сенс.
Речення ГРУППА ПО
використовується разом з агрегатними функціями для групування набору результатів по одному або декільком стовпчикам, наприклад:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
Запам'ятайте цей порядок:
- SELECT (використовується для вибору даних з бази даних)
- FROM (використовується для перерахування таблиць)
- FROM (використовується для перерахування таблиць)
- FROM (речення використовується для перерахування таблиць)
- WHERE (речення використовується для фільтрації записів)
- GROUP BY (речення може використовуватися в операторі SELECT для збору даних по декількох записах і згрупувати результати по одному або декільком стовпцям)
по
- HAVING (оператор використовується в поєднанні з оператором GROUP BY для обмежити групи рядків, що повертаються, тільки тими, для яких умова ІСТИНА)
- ORDER
- ORDER BY (ключове слово використовується для сортування результуючої множини)
Ви можете використовувати всі ці способи, якщо використовуєте агрегатні функції, і саме в такому порядку вони повинні бути задані, інакше можна отримати помилку.
Агрегатними функціями є:
MIN повертає найменше значення в заданому стовпчику SUM повертає найменше значення в заданому стовпчику; SUM повертає суму числових значень у заданому стовпчику SUM повертає суму числових значень у заданому стовпчику;
AVG повертає середнє значення заданого стовпчика
COUNT повертає середнє арифметичне значення заданого стовпця; COUNT повертає загальну кількість значень у заданому стовпчику COUNT() - повертає загальну кількість значень в даному стовпці COUNT(*) повертає кількість рядків у таблиці