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

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

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

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

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

FROM Операція)

Вкладені підзапити

{WHERE | HAVING} вираз [NOT] IN (підзапит);

{WHERE | HAVING} вираз оператор_порівняння {ALL |SOME| ANY} (підзапит);

{WHERE | HAVING} [NOT] EXISTS (підзапит);

Визначити список товарів, які є на складі

SELECT Назва

FROM Товар

WHERE КодТовара In (SELECT КодТовара FROM Склад)

Визначити список відсутніх на складі товарів

SELECT Назва

FROM Товар

WHERE КодТовара Not In (SELECT КодТовара FROM Склад)

Визначити товари, які купують клієнти з Москви

SELECT DISTINCT Товар.Назва Клієнт.МістоКлієнта

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

WHERE Клієнт.МістоКлієнта='Москва'

Визначити товари, покупку яких здійснюють тільки клієнти з Москви, і ніхто інший

SELECT DISTINCT Товар.Назва Клієнт.МістоКлієнта

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

ON Товар.КодТовара=Операція.КодТовара WHERE Товар.Назва NOT IN (SELECT Товар.Назва

FROM Товар INNER JOIN (Клієнт INNER JOIN Операція ON Клієнт.КодКлієнта=Операція.КодКлієнта) ON Товар.КодТовара=Операція.КодТовара WHERE Клієнт.МістоКлієнта<>'Москва')

Які товари жодного разу не купили московські клієнти?

SELECT DISTINCT Товар.Назва Клієнт.МістоКлієнта

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

WHERE Товар.Назва NOT IN (SELECT Товар.Назва

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

WHERE Клієнт.МістоКлієнта='Москва')

Визначити фірми, що купують товари місцевого виробництва

SELECT DISTINCT Клієнт.Фірма, Клієнт.МістоКлієнта, Товар.МістоТовара

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

WHERE Клієнт.МістоКлієнта=Товар.МістоТовара

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

SELECT DISTINCT Клієнт.Фірма Клієнт.МістоКлієнта, Товар.МістоТовара

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

WHERE Клієнт.МістоКлієнта NOT IN (SELECT DISTINCT Клієнт.МістоКлієнта

FROM Товар INNER JOIN (Клієнт INNER JOIN Операція ON Клієнт.КодКлієнта=Операція.КодКлієнта) ON Товар.КодТовара=Операція.КодТовара WHERE Клієнт.МістоКлієнта < > Товар.МістоТовара)

Ключові слова ANY і ALL

можуть використовуватися з підзапитами, що повертають один стовпець чисел.

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

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

Якщо в результаті виконання підзапиту отримане порожнє значення, то для ключового слова ALL умова порівняння вважатиметься виконаною, а для ключового слова ANY – невиконаною.

Ключове слово SOME є синонімом слова ANY

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