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

Розділ 3. Агрегація даних

3.1 SQL-функції

Агрегування даних - це обчислення підсумкових даних у групах однорідних даних.

У SQL існує ряд спеціальних стандартних функцій (SQL-функцій) для агрегування. Крім спеціального випадку COUNT(*) кожна з цих функцій оперує сукупністю значень стовпця деякої таблиці і створює єдине значення, обумовлене так:

COUNT - число значень у стовпці,

SUM - сума значень у стовпці,

AVG - середнє значення в стовпці,

MAX - найбільше значення в стовпці,

MІN - найменше значення в стовпці.

Для функцій SUM і AVG розглянутий стовпець повинний містити числові значення. Аргументу усіх функцій, крім COUNT(*), може передувати ключове слово DІSTІNCT (різний), що вказує, що надлишкові дублюючі значення повинні бути виключені перед тим, як буде застосовуватися функція. Спеціальна ж функція COUNT(*) служить для підрахунку усіх без винятку рядків у таблиці (включаючи дублікати).

3.2. Фраза group by

Фраза GROUP BY (групувати по) ініціює перекомпонування зазначеної в FROM таблиці по групах, кожна з який має однакові значення в стовпці, зазначеному в GROUP BY. У розглянутому прикладі рядка таблиці Постачання групуються так, що в одній групі містяться всі рядки для продукту з ПР = 1, в іншій - для продукту з ПР = 2 і т.д. Далі до кожної групи застосовується фраза SELECT. Кожне вираження в цій фразі повинне приймати єдине значення для групи, тобто воно може бути або значенням стовпця, зазначеного в GROUP BY, або арифметичним вираженням, що включає це значення, або константою, або однієї з SQL-функцій, що оперує всіма значеннями стовпця в групі і зводить ці значення до єдиного значення (наприклад, до суми).

Відзначимо, що фраза GROUP BY не припускає ORDER BY. Щоб гарантувати упорядкування по ПР результату розглянутого приклада варто дати запит

SELECT ПР, SUM (ДО_у)

FROM Постачання

GROUP BY ПР

ORDER BY ПР;

Якщо в запиті використовуються фрази WHERE і GROUP BY, то рядки, що не задовольняють фразі WHERE, виключаються до виконання групування.

3.3. Використання фрази havіng

Фраза HAVІNG грає таку ж роль для груп, що і фраза WHERE для рядків: вона використовується для виключення груп, точно так само, як WHERE використовується для виключення рядків. Ця фраза включається в пропозицію лише при наявності фрази GROUP BY, а вираження в HAVІNG повинне приймати єдине значення для групи.

Наприклад, видати коди продуктів, що поставляються більш ніж двома постачальниками:

SELECT

FROM Постачання

GROUP BY ПС

HAVІNG COUNT(*) > 2;

Розділ 4. Запити з використанням декількох таблиць

4.1. Запити, що використовують з'єднання

4.1.1. Декартів добуток таблиць

З'єднання - це підмножини декартового добутку. Тому що декартів добуток n таблиць - це таблиця, що містить усі можливі рядки r, такі, що r є зчепленням якого-небудь рядка з першої таблиці, рядка з другої таблиці, ... і рядка з n-й таблиці (а ми вже навчилися виділяти за допомогою SELECT будь-яка підмножина реляционной таблиці), те залишилося лише з'ясувати, чи можна за допомогою SELECT одержати декартів добуток. Для одержання декартового добутку декількох таблиць треба указати у фразі FROM перелік таблиць, що перемножуються, а у фразі SELECT - усі їхні стовпці.

Так, для одержання декартова добутку Вид_блюд і Трапези треба видати запит

SELECT Вид_блюд.*, Трапези.*

FROM Вид_блюд, Трапези;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]