
Лабораторна робота № 4
Тема: Групові функції в запитах
Мета: Ознайомитись з поняттям групових функцій, навчитись створювати запити з використанням групових функцій.
Загальні положення
Групові функції оперують з набором стрічок. Вони формують результати, які базуються на обробці групи стрічок. По замовчуванню всі стрічки таблицірезультатів трактуються як одна група. для того, щоб розбити стрічки на групи, використовується речення GRONP BY, специфіковане в команді SELECT. Нище наведено список групових функцій.
AVG([DISTINCT|ALL]n) |
Середнє значення групи полів в стовбці, не включаючи пустих значень. |
COUNT([DISTINCT|ALL]вираз) |
Кількість стрічок в групі, в яких вираз має не пусте значення. |
MAX([DISTINCT|ALL]вираз) |
Максимальне значення виразу в групі. |
MIN([DISTINCT|ALL]вираз) |
Мінімальне значення виразу в групі. |
STDDEV([DISTINCT|ALL]n) |
Функція, визначає матиматичне сподівання в групі, ігноруючи пусті значення. |
SUM([DISTINCT|ALL]n) |
Сума значень в групі, ігноруючи пусті значення. |
VARIANCE([DISTINCT|ALL]n) |
Дисперсія в групі. |
В наведеній таблиці під числом n розуміється ім’я поля, константа чи арифметичний вираз числового типу. Вираз може мати будь-який тип.
Перечислені функції оперують з групами рядків вихідних таблиць (наприклад, зі всією таблицею, як з групою) і в зв’язку з цим називаються груповими чи агрегованими функціями.
Кваліфікатор DISTINCT дає команду груповій функції oперувати тільки з неодинаковими стрічками в групах, тобто дубльовані стрічки при роботі функцій відкидаються.
Кваліфікатор ALL залишає дубльовані стрічки для обробки груповими функціями. По замовчуванню всі функції використовують кваліфікатор ALL.
Тип даних виразу може бути CHAR, NUMBER чи DATE (для функцій використовуючих в якості аргументу виразу).
Всі групові функції, крім COUNT (*), ігнорують пусті значення.
Для обробки пустих значень необхідно використовувати функцію NVL.
Використання групових функцій.
Для того щоб визначити кількість міст (стрічок в таблиці REGION) необхідно задати команду:
SELECT COUNT(*)
FROM REGION;
Cлід зауважити, що в даному випадку всі стрічки таблиці REGION розглядаються, як одна група.
Групова функція може обробляти частину стрічок таблиці, вибраної по критерію в реченні WHERE.
Щоб визначити найменше значення коду серед міст Львівської обл., необхідно виконати команду:
SELECT MIN(ID)
FROM REGION
WHERE PROVINCE NAME= ‘ЛЬВОВСКАЯ’;
Щоб підрахувати кількість місць Київської області слід ввести команду:
SELECT COUNT(*)
FROM REGION
WHERE PROVINCE_NAME=‘КИЕВСКАЯ’;
Речення groud by
Речення GROUD BY може бути використано для розбиття таблиці результатів на більш мілкі групи по значенню полів розбиття. При цьому групові функції вираховують агреговані значення в кожній з групи.
Щоб визначити кількість міст в кожній з областей слід задати команду:
SELECT PROVINCE_NAME, СOUNT(NAME)
FROM REGION
GROUP PROVINCE_NAME
Виключення стрічок при використанні речення GROUP BY.
Речення GROUP BY групує тільки підстрічки, які знайдені по заданому в реченні WHERE критерію пошуку. Іншими словами воно оперує зі стрічками таблиці результатів.
Щоб визначити кількість міст в кожній з областей, крім Києва, слід задати команду:
SELECT PROVINCE_NAME, COUNT(NAME)
FROM REGION
GROUP BY PROVINCE_NAME<>‘КИЕВ’;