Занятие 29. Отработка основных операторов. Часть 1
⚡ Кратко: домашнее задание
- Топ-5 клиентов по количеству заказов.
- Средняя стоимость заказа по городам.
- Объединение списков контактов.
🏠 Домашнее задание
Все задания выполняются в базе northwind.
Задание 1. Топ-5 клиентов по количеству заказов
Выведите имена и фамилии 5 клиентов, которые сделали больше всего заказов. Отсортируйте по убыванию количества заказов.
USE northwind;
SELECT c.first_name, c.last_name, COUNT(o.id) AS order_count
FROM customers AS c
JOIN orders AS o ON c.id = o.customer_id
GROUP BY c.id, c.first_name, c.last_name
ORDER BY order_count DESC
LIMIT 5;
Задание 2. Средняя стоимость заказа по городам
Для каждого города клиентов выведите среднюю общую стоимость заказа. Учитывайте только города, где сделано более 3 заказов.
USE northwind;
WITH order_totals AS (
SELECT o.id AS order_id,
o.customer_id,
SUM(od.unit_price * od.quantity) AS total
FROM orders AS o
JOIN order_details AS od ON o.id = od.order_id
GROUP BY o.id, o.customer_id
)
SELECT c.city, AVG(ot.total) AS avg_order_total
FROM customers AS c
JOIN order_totals AS ot ON c.id = ot.customer_id
GROUP BY c.city
HAVING COUNT(ot.order_id) > 3
ORDER BY avg_order_total DESC;
Задание 3. Объединение контактов
Составьте единый список контактных лиц: имя и фамилия клиентов, имя и фамилия сотрудников. Удалите дубликаты.
USE northwind;
SELECT first_name, last_name FROM customers
UNION
SELECT first_name, last_name FROM employees;
Проверить по документации: точные имена столбцов в схеме northwind могут отличаться. Адаптируйте запросы под реальные названия таблиц и полей.