Я розумію сенс 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
Це тому, що, коли ми групуємось за двома стовпцями, він говорить «Згрупуйте їх так, щоб усі ті, хто має однаковий предмет і семестр, були в одній групі, а потім обчислили всі сукупні функції ( підрахунок , сума, середнє значення тощо). ) для кожної з цих груп " . У цьому прикладі це демонструється тим, що, коли ми їх порахуємо, троє людей, які роблять 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
оскільки другим тільки списками згрупованих елементів з точно таким же змістом і немає «undergroups». У цьому випадку вихід буде таким же, як перший.
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, щоб обмежити групи повернутих рядків лише тим, у кого умова - ІСТИНА)
6) ORDER BY (ключове слово використовується для сортування набору результатів)
Ви можете використовувати все це, якщо ви використовуєте сукупні функції, і це є порядок їх встановлення, інакше ви можете отримати помилку.
Функціями сукупності є:
MIN повертає найменше значення в заданому стовпці
SUM повертає суму числових значень у заданому стовпці
AVG повертає середнє значення даного стовпця
COUNT повертає загальну кількість значень у заданому стовпці
COUNT (*) повертає кількість рядків у таблиці