Group by
GROUP BY — синтаксична конструкція мови SQL для агрегації записів, вибраних за допомогою запиту SELECT.
Нехай є таблиця статей, для кожної з яких з-поміж іншого зберігається рік їх написання. Потрібно отримати огляд того, скільки статей було написано кожного року.
SELECT year, count(1)
FROM articles
GROUP BY year;
Результат може бути таким:
| year | count(1) |
|---|---|
| 2006 | 7 |
| 2007 | 15 |
| 2008 | 22 |
Використання GROUP BY дозволяє застосовувати агрегатні функції. Найчастіше використовується для підрахунку кількості записів, відповідних кожному значенню іншого стовпця (у вищенаведено��у прикладі року), часто також суми, середнього арифметичного та інших статистичних оцінок вибраних записів.
У випадках, коли вибірку з GROUP BY необхідно додатково обмежити, а використовувати оператор WHERE не можна, оскільки він не працює з агрегатними функціями, необхідно використовувати спеціальне ключове слово HAVING, яке дозволяє задавати умови над агрегатними функціями.
Деякі системи керування базами даних (наприклад, MySQL та MariaDB[1]) підтримують конструкцію WITH ROLLUP, що вживається з оператором GROUP BY. Запит із конструкцією WITH ROLLUP поверне, згідно зі стандартом, р��дки зі значенням NULL у тих стовпцях, відповідно до яких дані агрегуються (якщо вказані), а на місці значень агрегатних функцій — результати цих функцій для всіх рядків — наприклад, для кількості (count) це кількість усіх входжень, для суми (sum) — загальна сума і т. д.
Для вищенаведеного прикладу запиту
SELECT year, count(1)
FROM articles
GROUP BY ROLLUP (year);
результат буде схожий на:
| year | count(1) |
|---|---|
| 2006 | 7 |
| 2007 | 15 |
| 2008 | 22 |
| NULL | 44 |
Значення NULL в останньому рядку представляє загальний показник за всі роки. Агрегованих стовпців або виразів може бути й більше — тоді результатний набір міститиме значення NULL із загальною сумою у зворотному порядку, крім зазначених в операторі GROUP BY.
- ↑ Архівована копія. Архів оригіналу за 25 вересня 2015. Процитовано 8 червня 2017.
{{cite web}}: Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання)
- SQL GROUP BY Statement. W3Schools (англійською) . Архів оригіналу за 4 січня 2017. Процитовано 5 січня 2017.
- GROUP BY Modifiers. MySQL (англійською) . Архів оригіналу за 6 січня 2017. Процитовано 5 січня 2017.
| Це незавершена стаття про бази даних. Ви можете допомогти проєкту, виправивши або дописавши її. |