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

✅ Решения

📁 Блок: SQL / MySQL / Оконные функции ⏱️ Время изучения: ~90 мин 🎯 Сложность: Продвинутая

⚡ Кратко: решения

  • Задание 1 — DENSE_RANK() OVER (ORDER BY standard_cost DESC), сортировка по себестоимости и LIMIT 10.
  • Задание 2 — ROW_NUMBER() OVER (ORDER BY product_name).
  • Задание 3 — NTILE(4) OVER (ORDER BY list_price).
1

Решение задания 1. Топ-10 продуктов по себестоимости

Так как нужен ранг без пропусков, используем DENSE_RANK. Так как формулировка просит именно топ-10 продуктов, ограничиваем итоговую выдачу через LIMIT 10.

SELECT
    product_name,
    DENSE_RANK() OVER (ORDER BY standard_cost DESC) AS cost_rank
FROM products
ORDER BY standard_cost DESC, product_name
LIMIT 10;
2

Решение задания 2. Нумерация по алфавиту

ROW_NUMBER() присваивает уникальный номер каждой строке в порядке возрастания названия.

SELECT
    product_name,
    ROW_NUMBER() OVER (ORDER BY product_name) AS row_num
FROM products;
3

Решение задания 3. Четыре группы по цене

NTILE(4) распределяет продукты по четырём группам в порядке возрастания list_price.

SELECT
    product_name,
    list_price,
    NTILE(4) OVER (ORDER BY list_price) AS price_group
FROM products;