Запити з умовою. Групування запитів
За навчальною програмою 2018 року
Урок 30
10
(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
За допомогою запитів з умовою вибираються ті записи, значення яких відповідають певному критерію. Для цього в інструкції SELECT після оператора FROM указується речення WHERE з необхідною умовою.
Умова набирає значення:
TRUE
FALSE
або
Відбираються ті записи, які відповідають умові, значення виразу в яких має TRUE.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
Приклад. Вибрати з таблиці КАДРИ працівників, стаж роботи яких понад 16 років, із полями Справа, Прізвище, Рік народження, Стаж, Номер магазина.
SELECT Справа, Прізвище, Стаж
FROM КАДРИ
WHERE Стаж>15;
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
Для групування записів використовується оператор GROUP BY. Він розміщується в інструкції SELECT після оператора WHERE (якщо він застосовується).
Використовується така загальна структура інструкції:
SELECT <список полів>
FROM <ім'я таблиці>
[WHERE <умова>] GROUP BY <список полів>;
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
У список полів речення GROUP BY можуть включатися тільки ті поля, які є в реченні SELECT.
SELECT Посада, COUNT (*) AS 'Кількість посад'
FROM КАДРИ
GROUP BY Посада
У результаті виконання цього запиту отримаємо результат, зображений на рисунку.
Як бачимо, підраховується кількість різних посад, що містяться в таблиці КАДРИ.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
SELECT Посада, SUM (Оклад) AS [Сума окладів]
FROM КАДРИ
GROUP BY Посада;
У результаті виконання цього запиту отримаємо результат, зображений на рисунку.
У цьому прикладі обчислюється сума окладів працівників для кожної назви посади.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
Зазначимо, що оператор WHERE використовується для записів початкової таблиці. Його не можна використовувати для згрупованих записів. Для вибору записів серед згрупованих використовується оператор HAVING, за яким у групі виконуються ті самі дії, як і в операторі WHERE для всієї початкової таблиці.
Таким чином, оператор HAVING може використовуватися лише за наявності оператора GROUP BY (за винятком окремих випадків, які трапляються доволі рідко).
Групувати рядки можна також із використанням оператора умови.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
В інструкції SELECT оператори WHERE, GROUP BY і HAVING виконуються в такому порядку.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
SELECT Посада
FROM КАДРИ
GROUP BY Посада
HAVING SUM (Оклад)>4200
У результаті виконання запиту отримаємо результат, зображений на рисунку.
У цьому прикладі обчислюється сума окладів для кожної групи посад і виводяться назви тих посад, сума окладів яких більше 4200.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
SELECT Посада, COUNT (Посада) AS Кількість
FROM КАДРИ
WHERE Стаж>15
GROUP BY Посада
HAVING Посада IN ('касир', 'диспетчер', 'експерт');
Результат виконання запиту зображений на рисунку.
10�(11)
Запити з умовою.�Групування запитів
Розділ 6 § 6.3
За допомогою оператора IN із таблиці вибираються всі ті записи, у яких значення вказаного поля збігається хоча б із одним значенням у списку значень оператора IN. Якщо значення поля збігається хоча б із одним значенням у списку оператора IN, виробляється значення TRUE.
У цьому прикладі підраховується кількість працівників професії «касир», «диспетчер» і «експерт», стаж роботи яких більше 15 років. Звернемо увагу, що назва посади «експерт» не виведена через те, що стаж роботи працівника цієї професії не відповідає умові.
10�(11)
Запитання для самоперевірки знань
Розділ 6 § 6.3
10�(11)
Домашнє завдання
Проаналізувати
§ 6.3, ст. 96-99
Розділ 6 § 6.3
10�(11)
Працюємо за комп’ютером
Розділ 6 § 6.3
Сторінка
99
10�(11)
Дякую за увагу!
За навчальною програмою 2018 року
Урок 30
10
(11)