Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.Б.Д / лекции / ЛЕКЦІЯ 8.ppt
Скачиваний:
28
Добавлен:
30.05.2020
Размер:
130.56 Кб
Скачать

ЛЕКЦІЯ 8

ТЕМА: Побудова нетривіальних запитів

План

1 Поняття підзапиту

2 Використовування підзапитів, що повертають безліч значень

3 Використовування операцій IN і NOT IN

4 Використовування ключових слів ANY і ALL

Підзапити

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

Є інструментом створення тимчасової таблиці, вміст якої створюється і обробляється зовнішнім оператором.

Текст підзапиту повинен бути взятий в дужки.

Правила створення підзапитів

фраза ORDER не використовується, хоча і може бути присутня в зовнішньому підзапиті;

список в пропозиції SELECT складається з імен окремих стовпців або складених з них виразів – за винятком випадку, коли в підзапиті присутнє ключове слово EXISTS;

за умовчанням імена стовпців в підзапиті відносяться до таблиці, ім'я якої вказано в пропозиції FROM. Проте допускається посилання і на стовпці таблиці, вказаної у фразі FROM зовнішнього запиту, для чого застосовуються імена стовпців з вказівкою таблиці;

якщо підзапит є одним з двох операндів, що беруть участь в операції порівняння, то запит повинен указуватися в правій частині цієї операції

Типи підзапитів

Скалярний підзапит повертає одне значення. Він може використовуватися скрізь, де вимагається вказати одне значення.

Табличний підзапит повертає декілька значень, тобто значення одного або декількох стовпців таблиці, розміщені в більш ніж одному рядку. Він можливий скрізь, де допускається наявність таблиці.

Визначити дату продажу максимальної партії товару

SELECT Дата, Кількість FROM Операція

WHERE Кількість = (SELECT Max (Кількість) FROM Операція)

Визначити дати операцій, що перевищили по кількості товару середнє значення і вказати для цих операцій перевищення над середнім рівнем

SELECT Дата, Кількість Кількість - (SELECT Avg(Кількість)

FROM Операція) AS Перевищення FROM Операція

WHERE Кількість > (SELECT Avg(Кількість) FROM Операція)

Визначити клієнтів, що вчинили операції з максимальною кількістю товару.

SELECT Клієнт.Прізвище

FROM Клієнт INNER JOIN Операція ON Клієнт.КодКлієнта = Операція.КодКлієнта

WHERE Операція.Кількість = (SELECT Max(Операція.Кількість)

FROM Операція)

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

SELECT Клієнт.Прізвище, Операція.Кількість

FROM Клієнт INNER JOIN Операція ON Клієнт.КодКлієнта = Операція.КодКлієнта

WHERE Сделка.Количество>=0.9* (SELECT Max(Операція.Кількість)

FROM Операція)

Визначити дати, коли середня кількість проданого за день товару виявилася більше 20 одиниць

SELECT Операція.Дата, Avg(Операція.Кількість) AS Середнє_за_день

FROM Операція GROUP Операція.Дата

HAVING Avg(Операція.Кількість) >20

Соседние файлы в папке лекции