← К оглавлению занятия

Занятие 29. Отработка основных операторов. Часть 1

📁 Блок: SQL / MySQL / Повторение и закрепление ⏱️ Время изучения: ~90 мин 🎯 Сложность: Средняя
#order #by #limit #offset #select #distinct #group #having #join #union

⚡ Кратко: домашнее задание

  • Топ-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 могут отличаться. Адаптируйте запросы под реальные названия таблиц и полей.