1 of 15

Урок 28�Запити з умовою. Групування запитів

2 of 15

Урок 28

р

Запити з умовою. Групування запитів

За допомогою запитів з умовою вибираються ті записи, значення яких відповідають певному критерію. Для цього в інструкції SELECT після оператора FROM указується речення WHERE з необхідною умовою.

Умова набирає значення:

TRUE

або

FALSE

Відбираються ті записи, які відповідають умові, значення виразу в яких має TRUE.

3 of 15

Урок 28

р

Запити з умовою. Групування запитів

Приклад. Вибрати з таблиці КАДРИ працівників, стаж роботи яких понад 16 років, із полями Справа, Прізвище, Рік народження, Стаж, Номер магазина.

  1. Для реалізації цього завдання створимо такий запит:

SELECT Справа, Прізвище, Стаж

FROM КАДРИ

WHERE Стаж>15;

  1. У результаті виконання запиту отримаємо результат, зображений на рисунку.

4 of 15

Урок 28

р

Запити з умовою. Групування запитів

Для групування записів використовується оператор GROUP BY. Він розміщується в інструкції SELECT після оператора WHERE (якщо він застосовується).

Використовується така загальна структура інструкції:

SELECT <список полів>

FROM <ім'я таблиці>

[WHERE <умова>] GROUP BY <список полів>;

5 of 15

Урок 28

р

Запити з умовою. Групування запитів

У список полів речення GROUP BY можуть включатися тільки ті поля, які є в реченні SELECT.

SELECT Посада, COUNT (*) AS 'Кількість посад'

FROM КАДРИ

GROUP BY Посада

У результаті виконання цього запиту отримаємо результат, зображений на рисунку.

Як бачимо, підраховується кількість різних посад, що містяться в таблиці КАДРИ.

6 of 15

Урок 28

р

Запити з умовою. Групування запитів

SELECT Посада, SUM (Оклад) AS [Сума окладів]

FROM КАДРИ

GROUP BY Посада;

У результаті виконання цього запиту отримаємо результат, зображений на рисунку.

У цьому прикладі обчислюється сума окладів працівників для кожної назви посади.

7 of 15

Урок 28

р

Запити з умовою. Групування запитів

Групувати рядки можна також із використанням оператора умови.

Зазначимо, що оператор WHERE використовується для записів початкової таблиці. Його не можна використовувати для згрупованих записів. Для вибору записів серед згрупованих використовується оператор HAVING, за яким у групі виконуються ті самі дії, як і в операторі WHERE для всієї початкової таблиці.

Таким чином, оператор HAVING може використовуватися лише за наявності оператора GROUP BY (за винятком окремих випадків, які трапляються доволі рідко).

8 of 15

Урок 28

р

Запити з умовою. Групування запитів

В інструкції SELECT оператори WHERE, GROUP BY і HAVING виконуються в такому порядку.

  1. Із початкової таблиці насамперед відбираються ті записи, які відповідають умові в операторі WHERE.
  1. Відібрані записи за допомогою оператора GROUP BY групуються у групи.
  1. Наприкінці за допомогою оператора HAVING відбираються записи, які відповідають зазначеній умові.

9 of 15

Урок 28

р

Запити з умовою. Групування запитів

SELECT Посада

FROM КАДРИ

GROUP BY Посада

HAVING SUM (Оклад)>4200

У результаті виконання запиту отримаємо результат, зображений на рисунку.

У цьому прикладі обчислюється сума окладів для кожної групи посад і виводяться назви тих посад, сума окладів яких більше 4200.

10 of 15

Урок 28

р

Запити з умовою. Групування запитів

SELECT Посада, COUNT (Посада) AS Кількість

FROM КАДРИ

WHERE Стаж>15

GROUP BY Посада

HAVING Посада IN ('касир', 'диспетчер', 'експерт');

Результат виконання запиту зображений на рисунку.

11 of 15

Урок 28

р

Запити з умовою. Групування запитів

За допомогою оператора IN із таблиці вибираються всі ті записи, у яких значення вказаного поля збігається хоча б із одним значенням у списку значень оператора IN. Якщо значення поля збігається хоча б із одним значенням у списку оператора IN, виробляється значення TRUE.

У цьому прикладі підраховується кількість працівників професії «касир», «диспетчер» і «експерт», стаж роботи яких більше 15 років. Звернемо увагу, що назва посади «експерт» не виведена через те, що стаж роботи працівника цієї професії не відповідає умові.

12 of 15

р

Запитання для самоперевірки знань

Урок 28

Запити з умовою. Групування запитів

  1. Наведіть приклад інструкції з оператором GROUP BY.
  1. Наведіть приклад інструкції з оператором WHERE.
  1. Поясніть призначення оператора HAVING.
  1. Який оператор використовується для. групування записів?
  1. Які поля таблиці можуть застосовуватися в операторі GROUP BY?
  1. Який оператор використовується в запитах з умовою?

13 of 15

Вивчити�§ 6.3, ст. 96-99

Домашнє завдання

Урок 28

Запити з умовою. Групування запитів

14 of 15

Працюємо за комп’ютером

Сторінка

99

Запити з умовою. Групування запитів

Урок 30

15 of 15

Дякую �за увагу!