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

🏠 Домашнее задание

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

  1. Открыть Google Sheets по ссылке из источника.
  2. Для каждой задачи определить окно: нужен ли PARTITION BY и ORDER BY.
  3. Проверить, что строки не сворачиваются, а результат добавляется столбцом.

🏠 Задание из Google Sheets

В представленной Google Sheets выполните задания по определению окон и сортировки.

→ Открыть Google Sheets

🛠️ Подготовка

  1. Откройте ссылку на Google Sheets.
  2. Внимательно прочитайте каждое задание: какой результат нужно получить для каждой строки.
  3. Определите, по какому признаку нужно разбить данные (это будущий PARTITION BY).
  4. Определите, в каком порядке строки должны идти внутри каждой группы (это будущий ORDER BY внутри OVER).

📝 Концептуальное пошаговое решение

1

Шаг 1. Понять, какие строки должны попасть в окно

Задайте себе вопрос: результат должен считаться по всей таблице или отдельно для каждой группы?

  • Если по всей таблице — окно без PARTITION BY: OVER ().
  • Если отдельно по группам — используйте OVER (PARTITION BY column).
2

Шаг 2. Определить сортировку внутри окна

Если результат зависит от порядка строк (например, накопительная сумма или рейтинг), добавьте ORDER BY внутри OVER:

OVER (PARTITION BY group_column ORDER BY sort_column)

Если порядок не важен (например, просто количество строк в группе), ORDER BY можно не указывать.

3

Шаг 3. Выбрать оконную функцию

На этом занятии мы не углубляемся в конкретные функции. Достаточно понимать, что под задачу подходит одна из следующих групп:

  • Агрегатные функции в окне: COUNT, SUM, AVG, MIN, MAX.
  • Функции ранжирования и смещения (RANK, LEAD, LAG и др.) — будут в следующих занятиях.
4

Шаг 4. Проверить результат

Убедитесь, что:

  • Количество строк в результате совпадает с исходным (если используется только оконная функция).
  • Значение в новом столбце одинаково внутри одного окна, если того требует логика.
  • Сортировка внутри окна задана корректно для накопительных вычислений.

✅ Проверка

  1. Сравните свои ответы с примерами из раздела Примеры.
  2. Убедитесь, что вы правильно разделили данные на окна и задали сортировку.
  3. Если есть сомнения — перепишите запрос в SQL и выполните в DBeaver.