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

🔖 Справочник: команды и синтаксис

⚡ Минимум для запоминания

  • OVER() — задаёт окно для оконной функции.
  • PARTITION BY column — делит строки на разделы.
  • ORDER BY column внутри OVER — сортирует строки в окне.
  • Базовый шаблон: function() OVER (PARTITION BY ... ORDER BY ...) AS alias.

Синтаксис

-- Общий шаблон оконной функции
SELECT
    column1,
    window_function() OVER (
        PARTITION BY column2
        ORDER BY column3
    ) AS result_column
FROM table_name;

Команды / операторы / функции

КонструкцияОписаниеПример
OVER() Определяет окно строк для оконной функции. COUNT(*) OVER ()
PARTITION BY Разделяет строки на независимые разделы (группы). OVER (PARTITION BY department_id)
ORDER BY в OVER Задаёт порядок строк внутри окна. OVER (ORDER BY salary DESC)
COUNT() OVER Считает количество строк в окне. COUNT(*) OVER (PARTITION BY department_id)
SUM() OVER Считает сумму значений в окне. SUM(amount) OVER (PARTITION BY year)
AVG() OVER Считает среднее значение в окне. AVG(salary) OVER (PARTITION BY department_id)

Структура выражения OVER

window_function() OVER (
    [PARTITION BY partition_column1, partition_column2, ...]
    [ORDER BY sort_column1 [ASC | DESC], sort_column2 [ASC | DESC], ...]
)
  • PARTITION BY необязателен. Если его нет, окно охватывает все строки результата.
  • ORDER BY внутри OVER необязателен, но нужен для функций, чувствительных к порядку.
  • Разделов и столбцов сортировки может быть несколько.

Полный справочник

→ Справочник SQL