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