Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Шпоры по базам данных / Шпора по SQL 3

.doc
Скачиваний:
67
Добавлен:
02.05.2014
Размер:
155.65 Кб
Скачать

SELECT Поставщик.КодПост, Поставщик.НазвПост, Поставщик.Статус

FROM Поставщик_x LEFT JOIN Поставщик _y ON( x.Город=y.Город)

WHERE x.Статус<=y.Статус

ORDER BY НазвПост

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь поставщиков, которые поставляют товары, и товары которые поставляются поставщикам. Результат должен содержать колонки: «код» (поставщика/товара); «название» (поставщика/товара); «тип» (поставщик/товар); «количество» (суммарное число товаров во всех поставках поставщика / товара). Упорядочить по типам, затем – по названиям.

SELECT DISTINCT Поставка.КодПост, Поставщик.НазвПост, AS ‘Тип’, SUM(Поставка.qty)

FROM Поставщик INNER JOIN Поставка ON (Поставщик.КодПост = Поставка.КодПост)

WHERE count(*)>0

GROUP BY (Поставка.КодПост)

UNION

SELECT Товар.КодТовара, Товар.Назв.товара ‘товар’ AS ‘тип’, SUM

FROM Товар INNER JOIN Поставка ON (Товар.КодТовара = Поставка.КодТовара)

WHERE count(*)>0

GROUP BY Поставка.КодТовара

ORDER BY Тип

ORDER BY Назв.

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь коды и названия поставщиков, которые либо вовсе не поставляют всего один товар, причем из Парижа. Результат упорядочить по названиям.

SELECT Поставка.КодПост, Поставщик.НазвПост

FROM Поставщик INNER JOIN Поставка ON(Поставщик.КодПост=Поставка.КодПост)

WHERE count(*)=0

UNION

SELECT Поставка.КодПост, Поставщик.НазвПост

FROM Поставщик INNER JOIN Поставка ON (Поставщик.КодПост=Поставка.КодПост)

WHERE count(*)=1 AND city=’paris’

GROUP BY Поставка.КодПост

ORDER BY Поставщик.НазвПост

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь сведения о поставщиках со средним количеством товаров в поставке выше 200: код, название, количество поставок и суммарное количество поставляемых товаров. Упорядочить по названиям.

SELECT Поставка.КодПост, Поставщик.НазвПост, count(*), SUM(Поставка.qty)

FROM Поставщик INNER JOIN Поставка ON (Поставщик.КодПост=Поставка.КодПост)

WHERE AVG(Поставка.qty)>200

GROUP BY Поставка.КодПост

ORDER BY Поставщик.НазвПост

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь статистику поставщиков: статус, город, количество поставщиков с данным статусом из данного города, количество их поставок, суммарное количество поставляемых ими товаров. Упорядочить по статусам, затем – по городам.

SELECT Поставщик.status, Поставщик.city, count(*), SUM(Поставка.qty), count(Поставка.КодПост)

FROM Поставщик INNER JOIN Поставка ON (Поставщик.КодПост=Поставка.КодПост)

GROUP BY Поставщик.status, Поставщик.city

ORDER BY Поставщик.status, Поставщик.city

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь сведения о товарах, у которых их суммарное количество в поставках поставщиков из Парижа выше, чем суммарное количество товаров, поставляемых поставщиком с кодом «123123»: код, название, суммарное количество.

SELECT Поставка.КодТовара, Товар.НазвТовара, sum(Поставка.qty)

FROM Поставка, Поставщик, Товар

WHERE(Поставка.КодПост=Поставщик.КодПост) AND (Поставка.КодТовара=Товар.КодТовара) AND(Поставщик.city=’Paris’)

GROUP BY Поставка.КодТовара, Товар.НазвТовара

HAVING SUM(Поставка.qty)>(SELECT SUM(Поставка.qty)

FROM Поставка

WHERE Поставка.КодПост=’123123’)

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь коды и названия поставщиков, поставляющих более 100 штук в точности тех товаров, которые поставляет поставщик «Иванов и Ко». отсортировать результат в алфавитном порядке названий.

SELECT Поставщик.КодПост, Поставщик.НазвПост

FROM Поставщик INNER JOIN Поставка ON (Поставщик.КодПост=Поставка.КодПост)

WHERE

EXIST(SELECT DISTINCT Поставка.КодТовара

FROM Поставка INNER JOIN Поставщик ON (Поставщик.КодПост=Поставка.КодПост)

WHERE (Поставщик.НазвПост=’ Ivanov’) AND (Поставка.qty>100)

ORDER BY Поставщик.НазвПост

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь коды и названия товаров, которые поставляют в количестве больше 100 штук, по крайней мере, все те поставщики, которые поставляют товар «Шайба». Отсортировать результат в обратном алфавитном порядке названий.

SELECT Поставка.КодТовара, Товар.НазвТовара

FROM Товар INNER JOIN Поставка ON (Поставка.КодТовара=Товар.КодТовара)

WHERE NOT EXIST(SELECT Поставка.КодПост

FROM Поставка INNER JOIN Товар ON (…)

WHERE (Товар.НазвТовара=’SHaiba’) AND

NOT IN (SELECT Поставка.КодПост FROM Поставка, Товар

WHERE ((Поставка.КодТовара=Товар.КодТовара) AND Поставка.qty>100)

ORDER BY Товар.НазвТовара DECT

Поставщик (КодПост, НазвПост, Статус, Город) – справочник поставщиков;

Товар (КодТовара, НазвТовара, Вес, Цвет, Город) – справочник товаров;

Поставка (КодПост, КодТовара, Количество) – поставка данным поставщикам данного товара.

Извлечь коды и названия поставщиков, не поставляющих в количестве более 100 штук ни одного товара из тех, которые поставляет поставщик «Иванов и К­о» (предполагается, что это поставщик поставляет хотя бы один товар). Отсортировать результат в обратном порядке кодов.

SELECT Поставщик.КодПост, Поставщик.НазвПост

FROM Поставщик INNER JOIN Поставка ON(Поставщик.КодПост=Поставка.КодПост)

WHERE NOT EXIST((SELECT Поставка.КодТовара

FROM Поставка INNER JOIN Поставщик ON (…)

WHERE Поставщик.НазвПост=’Ivanov) AND Поставка.qty>100)

ORDER BY Поставщик.КодПост DECT

Продукт (Код_Продукта, Назв_Продукта, Калорийность)

Блюдо (Код_Блюда, Назв_Блюда, Категория)

Рецепт (Код_Продукта, Код_Блюда, Количество_Продукции_В_Блюде)

Извлечь статистику по калорийности: калорийность, количество продуктов с этой калорийностью, количество блюд с этой калорийностью. Исключить названия продуктов, начинающиеся с буквы А и блюд категорий Б. Упорядочить в обратном порядке.

SELECT Продукт, Калорийность, COUNT (Код_Продукта) COUNT(Код_Блюда)

FROM Продукт, Рецепт.

WHERE Код_Продукта NOT IN (SELECT Код_Продукта FROM Продукт WHERE Назв_Продукта LIKE ’A%’)

And Код_Блюда NOT IN (SELECT Код_Блюда FROM Блюдо WHERE Категория = ‘Б’)

GROUP BY COUNT (Код_Продукта), COUNT (Код_Блюда)

ORDER BY Калорийность DESC

Соседние файлы в папке Шпоры по базам данных