GROUP BY — синтаксична конструкція мови SQL для агрегації записів, вибраних за допомогою запиту SELECT.

Приклади Нехай є таблиця статей, для кожної з яких з-поміж іншого зберігається рік їх написання. Потрібно отримати огляд того, скільки статей було написано кожного року.

Результат може бути таким: year count(1) 2006 7 2007 15 2008 22

Інші можливості

GROUP BY та агрегатні функції

Використання дозволяє застосовувати агрегатні функції. Найчастіше використовується для підрахунку кількості записів, відповідних кожному значенню іншого стовпця (у вищенаведеному прикладі року), часто також суми, середнього арифметичного та інших статистичних оцінок вибраних записів.

HAVING

У випадках, коли вибірку з необхідно додатково обмежити, а використовувати оператор WHERE не можна, оскільки він не працює з агрегатними функціями, необхідно використовувати спеціальне ключове слово , яке дозволяє задавати умови над агрегатними функціями.

WITH ROLLUP Деякі системи керування базами даних (наприклад, MySQL та MariaDB) підтримують конструкцію , що вживається з оператором . Запит із конструкцією поверне, згідно зі стандартом, рядки зі значенням NULL у тих стовпцях, відповідно до яких дані агрегуються (якщо вказані), а на місці значень агрегатних функцій — результати цих функцій для всіх рядків — наприклад, для кількості () це кількість усіх входжень, для суми () — загальна сума і т. д.

Для вищенаведеного прикладу запиту

результат буде схожий на: year count(1) 2006 7 2007 15 2008 22 NULL 44

Значення NULL в останньому рядку представляє загальний показник за всі роки. Агрегованих стовпців або виразів може бути й більше — тоді результатний набір міститиме значення NULL із загальною сумою у зворотному порядку, крім зазначених в операторі .

Примітки

Посилання