Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Системи керування базами даних.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
205.5 Кб
Скачать

27. Агрегуючі функції в sql-інструкціях

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

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

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

 

Агрегуюча функція

Результат

SUM( вираз)

Сума значень

AVG( вираз) чи AVARAGE(вираз)

Середня величина значень

COUNT( вираз)

Кількість непорожніх значень

COUNT(*)

Кількість вибраних записів

MAX(вираз)

Максимальне значення

MIN(вираз)

Мінімальне значення

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

 Наприклад, запит : SELECT MAX(id) FROM stud повертає значення максимального ідентифікатора (табельного номера) з таблиці студентів.

Часто трапляється, що потрібно отримати значення агрегуючих функцій полів не для усіх вибраних записів, а лише в розрізі унікальних значень інших полів вибірки. В цьому випадку необхідно застосувати конструкцію GROUP BY , в списку полів якої потрібно перерахувати інші поля вибірки, унікальні комбінації яких утворять групи з однаковим значення агрегуючої функції. Наприклад, запит:SELECT grp, MIN(id) FROM stud GROUP BYgrp повертає набір мінімальних значень табельного номеру для кожного з існуючих значень ідентифікатора груп. Кількість рядків у такому наборі відповідає кількості унікальних значень поля grp в таблиці stud. 

28. Приклади використання агрегуючих функцій у запитах на вибірку

 

1) що знайти значення ідентифікатора останньої зареєстрованої студентської групи (максимальне значення поля id з таблиці grp)  слід виконати наступний запит

SELECT MAX(id) 

FROM  grp

2) що знайти кількість студентів, які навчаються на заочній формі навчання слід виконати наступний запит

SELECT COUNT(*) 

FROM stud s , grp g , formed f 

WHERE grp = g.id AND fed = f.id AND f.name="заочна"

3) що знайти кількість груп на 2-му курсі факультету фінансів слід виконати наступний запит

SELECT COUNT(*)

 FROM  grp g , inst i  

WHERE inst = i.id AND i.name="ФФ" AND curs =2

4) що вибрати назви груп та кількість студентів, які в них навчаються, відсортованих в порядку зростання другого поля слід виконати наступний запит

SELECT g.name , COUNT(*) 

FROM  grp g , stud s   

WHERE grp = g.id 

GROUP BY g.name 

ORDER BY 2

5) що вибрати назви факультетів, форм навчання  та кількість груп у них,  відсортованих в порядку зростання першого та другого поля слід виконати наступний запит

SELECT i.name, f.name , COUNT(*) 

FROM  grp g , inst i, formed f    

WHERE fed = f.id AND inst = i.id 

GROUP BY  i.name, f.name 

ORDER BY 1 , 2

6) що вибрати назви факультетів, назви груп  та кількість студентів, які в них навчаються,  для яких ця кількість перевищує число 37, відсортованих у порядку спадання кількості студентів, слід виконати наступний запит

SELECT i.name, g.name , COUNT(*) 

FROM  grp g , inst i, stud s    

WHERE grp = g.id AND inst = i.id 

GROUP BY  i.name, g.name 

HAVING COUNT(*) > 37

ORDER BY 3 DESC