- •ЛЕКЦІЯ 8
- •План
- •Підзапити
- •Правила створення підзапитів
- •Типи підзапитів
- •Визначити дату продажу максимальної партії товару
- •Визначити дати операцій, що перевищили по кількості товару середнє значення і вказати для
- •Визначити клієнтів, що вчинили операції з максимальною кількістю товару.
- •Визначити клієнтів, в операціях яких кількість товару відрізняється від максимального не більше ніж
- •Визначити дати, коли середня кількість проданого за день товару виявилася більше 20 одиниць
- •Визначити дати, коли середня кількість проданого за день товару виявилася більше середнього показника
- •Вкладені підзапити
- •Визначити список товарів, які є на складі
- •Визначити список відсутніх на складі товарів
- •Визначити товари, які купують клієнти з Москви
- •Визначити товари, покупку яких здійснюють тільки клієнти з Москви, і ніхто інший
- •Які товари жодного разу не купили московські клієнти?
- •Визначити фірми, що купують товари місцевого виробництва
- •Визначити фірми, які купують тільки товари, вироблені в своєму місті, і ніякі інші.
- •Ключові слова ANY і ALL
- •Знайти фірму, що купила товарів на суму, що перевищує 10000 крб
- •Знайти фірму, яка придбала товарів на найбільшу суму
- •Знайти фірми, в операціях яких кількість товару перевищує такий же показник хоча б
- •Визначити список товарів, що є на складі
- •Визначити список відсутніх на складі товарів
Визначити дати, коли середня кількість проданого за день товару виявилася більше середнього показника по всіх операціях взагалі
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
