Для групування (grouping) в SQL використовується речення GROUP BY, яке йде в конструкції „select-from-where” за реченням WHERE. Після службових слів GROUP BY задається список групуючих атрибутів (grouping attributes). Алгоритм групування:
- Кортежі відношення, яке задається реченням FROM, ділиться на групи, для яких набір групуючих атрибутів має одне значення.
- Якщо список SELECT має оператори агрегування, вони застосовуються для кожної групи, також повертаючи одне значення для групи.
- У результуючому відношенні створюється один кортеж для групи, який містить атрибути:
- Або групуючі,
- Або результати агрегування.
Приклад 5.13. Обчислимо суми тривалості всіх фільмів кожної студії. Аналізуємо відношення:
Запит:
Приклад 5.14. Знайдемо студії, які володіють правами на певні фільми:
Приклад 5.15. Знайдемо сумарну тривалість відтворення фільмів, знятих кожним продюсером, використовуючи відношення
У запиті групується віртуальне відношення, створене зі з’єднання двох збережених відношень:
Рис.5.21. Приклад групування та агрегування даних з кількох відношень
Звернімо увагу, що атрибути, задіяні в реченні WHERE підзапиту, не є ні групуючими, ні агрегуючими. Але їх не повинно бути у списку речення SELECT.