
- •Лабораторная работа № 13. Оператор select … where. Выборка из таблицы записей, удовлетворяющих заданному условию.
- •Лабораторная работа № 14. Предложения group by и having
- •Лабораторная работа № 15. Многотабличные запросы
- •Лабораторная работа № 16. Предикат null. Подзапросы. Предикаты exists, any, all
- •Лабораторная работа № 17. Объединение результатов нескольких запросов – union. Создание таблицы из существующих таблиц – select … into
- •Лабораторная работа № 18. Операторы insert, update, delete
Лабораторная работа № 14. Предложения group by и having
Предложение GROUP BY.
Составить и выполните следующие запросы к таблице «Заказы»:
a)подсчитать для каждой страны количество заказов, минимальную, среднюю и максимальную стоимость доставки;
SELECT КодТовара, Count(*) AS [К-во заказов], Max([Количество]) AS [Макс_к-во_товара]
FROM Заказано
WHERE КодТовара<6
GROUP BY КодТовара;
b) подсчитать для каждого города суммарную стоимость доставки всех заказов,
отсортировать выбранные записи по суммарной стоимости доставки;
SELECT ГородПолучателя, Count(*) AS [Кол-во заказов], SUM(СтоимостьДоставки)
FROM Заказы
GROUP BY ГородПолучателя
ORDER BY SUM(СтоимостьДоставки);
c) подсчитать для каждой страны суммарную стоимость доставки всех заказов;
SELECT СтранаПолучателя, SUM(СтоимостьДоставки) AS СумСтоимость
FROM Заказы
GROUP BY СтранаПолучателя;
d) подсчитать для каждого города каждой страны суммарную стоимость доставки всех заказов;
SELECT ГородПолучателя, SUM(СтоимостьДоставки), СтранаПолучателя
FROM Заказы
GROUP BY ГородПолучателя, СтранаПолучателя;
Предложение HAVING.
Составить и выполнить следующие запросы:
а) выбрать из таблицы «Заказано» коды товаров, у которых максимальная скидка больше 20%;
SELECT КодЗаказа, MAX(Скидка) AS Макс_скидка
FROM Заказано
GROUP BY КодЗаказа
HAVING MAX(Скидка)>0.2;
в) выбрать из таблицы «Товары» для каждого товара код товара, среднюю, минимальную и максимальную цены при условии, что средняя цена меньше 2000
SELECT КодЗаказа, MIN(Цена) AS МинимальнаяЦена, MAX(Цена) AS МаксимальнаяЦена, AVG(Цена) AS СредняяЦена
FROM Заказано
GROUP BY (КодЗаказа)
HAVING AVG(Цена)<2000;
Лабораторная работа № 15. Многотабличные запросы
Многотабличный запрос с описанием связей между таблицами в предложении
Составить запрос на выборку наименований книг и их авторов:
WHERE.
SELECT a.Наим, b.ФИО
FROM Книга AS a, Писатель AS b
WHERE a.Автор=b.КодП;
Левые и правые внешние соединения.
Составить и выполнить следующие запросы:
а) выбрать все имеющиеся в базе названия произведений Пушкина и Толстого Л.Н. и вместе с ФИО авторов;
SELECT a.Наим, b.ФИО
FROM Книга AS a, Писатель AS b
WHERE b.КодП=a.Автор And (b.ФИО='Пушкин' Or b.ФИО='Толстой Л. Н.');
б) Используя таблицы «заказы» и «клиенты», выбрать названия клиентов, их представителей (поле «ОбращатьсяК») и даты размещения их заказов при условии, что клиенты из Лондона;
SELECT a.Клиент, b.ОбращатьсяК, c.ДатаРазмещения
FROM Заказы INNER JOIN Клиенты ON Заказы.КодКлиента=Клиенты.КодКлиента
WHERE ГородПолучателя=Лондон;
в) Используя таблицы «заказы» «заказано», «товары» и «клиенты», выбрать названия клиентов, их представителей (поле «ОбращатьсяК») и коды и марки выбранных ими товаров при условии, что названия клиентов начинаются на “F” и заказы оформлял сотрудник Кротов.
SELECT a.КодКлиента, b.ОбращатьсяК, c.КодТовара, Марка
FROM Товары AS c, Заказы AS a, Заказано AS d, Клиенты AS b, Сотрудники AS f
WHERE a.НазваниеПолучателя Like 'F*' And f.Фамилия='Кротов' And a.КодЗаказа=d.КодЗаказа And d.КодТовара=c.КодТовара And a.КодСотрудника=f.КодСотрудника And a.КодКлиента=b.КодКлиента;