Ноу Інти, лекція, введення в структурована мова запитів

- середню зарплату по організації і її розкид (дисперсію).

Однак найбільш часто потрібно подібна підсумкова інформація не для таблиці в цілому, а для певних наборів (груп) рядків таблиці.

Для того щоб групувати рядки таблиці по будь-якою ознакою, в команді SELECT існує спеціальна пропозиція GROUP BY. яке задає колонку (або колонки) для проведення угруповання. Ця пропозиція групує рядки таблиці за значеннями колонок угруповання з подальшим придушенням дублюючих значень в колонках угруповання, тобто дозволяє визначати підмножина значень деякої колонки в термінах іншої колонки і застосовувати до отриманих підмножини функції агрегування.

Припустимо, що ви хочете знайти мінімальні і максимальні оклади службовців в підрозділах, тоді ви можете написати

Пропозиція GROUP BY повинне слідувати після пропозиції WHERE, якщо останнє є присутнім в команді SELECT. Кожен рядок результуючої таблиці відноситься до однієї групи рядків. Число груп визначається числом різних значень в колонці угруповання (в даному випадку DEPNO). Агрегатні функції застосовуються до кожної групи як до окремого безлічі.

Агрегатні функції можна використовувати при з'єднанні таблиць. Припустимо, що вам потрібно знати, скільки службовців працює на кожній посаді в кожному підрозділі, яка сума зарплати на підрозділ і середня зарплата. Тоді вам потрібен запит

Функції SUM (), COUNT (), AVG () обчислюють суми, число рядків в групі і середнє значення в групі рядків.

У SQL можна задавати умови пошуку для групи рядків. Для цього в команді SELECT існує пропозиція HAVING. яке повинно слідувати за пропозицією GROUP BY. HAVING задає умову пошуку для групи рядків.

Припустимо, що вам необхідно отримати відповідь на те ж питання, що і в попередньому прикладі, але при цьому кожна група повинна складатися не менше ніж з двох працівників.

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

Таким чином, ви познайомилися з різними варіантами використання команди SQL SELECT.