Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по лабораторным работам_Носова.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
93.7 Кб
Скачать

Лабораторная работа № 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.КодКлиента;