1 of 15

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

За навчальною програмою 2018 року

Урок 30

10

(11)

2 of 15

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

Розділ 6 § 6.3

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

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

TRUE

FALSE

або

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

10�(11)

3 of 15

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

Розділ 6 § 6.3

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

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

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

FROM КАДРИ

WHERE Стаж>15;

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

10�(11)

4 of 15

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

Розділ 6 § 6.3

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

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

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

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

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

10�(11)

5 of 15

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

Розділ 6 § 6.3

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

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

FROM КАДРИ

GROUP BY Посада

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

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

10�(11)

6 of 15

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

Розділ 6 § 6.3

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

FROM КАДРИ

GROUP BY Посада;

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

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

10�(11)

7 of 15

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

Розділ 6 § 6.3

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

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

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

10�(11)

8 of 15

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

Розділ 6 § 6.3

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

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

10�(11)

9 of 15

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

Розділ 6 § 6.3

SELECT Посада

FROM КАДРИ

GROUP BY Посада

HAVING SUM (Оклад)>4200

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

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

10�(11)

10 of 15

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

Розділ 6 § 6.3

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

FROM КАДРИ

WHERE Стаж>15

GROUP BY Посада

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

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

10�(11)

11 of 15

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

Розділ 6 § 6.3

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

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

10�(11)

12 of 15

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

Розділ 6 § 6.3

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

10�(11)

13 of 15

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

Проаналізувати

§ 6.3, ст. 96-99

Розділ 6 § 6.3

10�(11)

14 of 15

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

Розділ 6 § 6.3

Сторінка

99

10�(11)

15 of 15

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

За навчальною програмою 2018 року

Урок 30

10

(11)