SQL містить функції, що дають змогу обчислювати різні статистичні характеристики. Такі функції називаються агрегатними. Стандарт ANSI визначає певний набір функцій, однак у СКБД він зазвичай значно розширюється. Наприклад, діалект SQL, що використовується в СКБД Oracle, містить понад 120 функцій.
З усієї множини функцій SQL ми розглянемо лише ті, що перелічені в стандарті ANSI. А саме:
♦ COUNT — повертає кількість рядків у таблиці;
♦ SUM — повертає суму всіх значень у стовпці;
♦ AVG — повертає середнє арифметичне всіх значень у стовпці;
♦ МАХ — повертає найбільше значення у стовпці;
♦ MIN - повертає найменше значення у стовпці.
Окрім C0UNT(*), кожна з цих функцій оперує (як аргументом) сукупністю значень стовпця певної таблиці та повертає єдине значення. Для функцій SUM і AVG стовпець-аргумент повинен містити числові значення.
Слід зазначити, що у даному випадку стовпець-аргумент — це стовпець віртуальної таблиці, в якій можуть міститися дані не лише зі стовпця базової таблиці, але й отримані шляхом функціонального перетворення та/або зв'язування символами арифметичних операцій значень з одного або кількох стовпців. Вирази, що визначають стовпець такої таблиці, мають різний рівень складності, але не можуть містити інших SQL-функцій. Наприклад, вираз АУЄССтавка + Надбавка/2) є припустимим, а вираз AVG(SUM(...)) — ні. SQL-функції можуть входити до складу виразів, наприклад SUM((DoHfl)/Count(*).
Аргументам усіх функцій, окрім C0UNT(*), може передувати модифікатор DISTINCT (різний), що вказує на необхідність видалення дублікатів перед застосуванням функції. Функція C0UNT(*) використовується для обчислення кількості всіх рядків таблиці з урахуванням дублікатів.
Агрегатні функції можна застосовувати лише у фразах SELECT та HAVING. Якщо в запиті немає фрази GROUP BY, то область дії агрегатної функції поширюється на все кінцеве реляційне відношення, а в разі її наявності — на створювані нею групи. Розглянемо використання цих функцій на прикладах.
Запит 4.9_________
Визначити кількість кафедр на факультеті інформатики.
SELECT C0UNT(*) FROM ФАКУЛЬТЕТ. КАФЕДРА
WHERE ФАКУЛЬТЕТ.#F = КАФЕДРА.#F AND ФАКУЛЬТЕТ.Назва = "інформатики"
Результат цього запиту може виглядати так: C0UNT(*)
SUM(Mi сткі сть)/C0UNT(*) Average_Number_Of_Seats FROM АУДИТОРІЯ
WHERE Корпус = 5
Якщо в запиті немає фрази GROUP BY, то використання імен стовпців разом із агрегатними функціями у фразі SELECT є неприпустимим. Наприклад, у результаті виконання запиту
SELECT Корпус. SUM(Miсткість) Tota1_Number_0f_Seats_In_Building FROM АУДИТОРІЯ