← К оглавлению занятия
⚡ Кратко: домашнее задание
- Открыть Google Sheets по ссылке из источника.
- Для каждой задачи определить окно: нужен ли
PARTITION BY и ORDER BY.
- Проверить, что строки не сворачиваются, а результат добавляется столбцом.
🏠 Задание из Google Sheets
В представленной Google Sheets выполните задания по определению окон и сортировки.
→ Открыть Google Sheets
🛠️ Подготовка
- Откройте ссылку на Google Sheets.
- Внимательно прочитайте каждое задание: какой результат нужно получить для каждой строки.
- Определите, по какому признаку нужно разбить данные (это будущий
PARTITION BY).
- Определите, в каком порядке строки должны идти внутри каждой группы (это будущий
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. Проверить результат
Убедитесь, что:
- Количество строк в результате совпадает с исходным (если используется только оконная функция).
- Значение в новом столбце одинаково внутри одного окна, если того требует логика.
- Сортировка внутри окна задана корректно для накопительных вычислений.
✅ Проверка
- Сравните свои ответы с примерами из раздела Примеры.
- Убедитесь, что вы правильно разделили данные на окна и задали сортировку.
- Если есть сомнения — перепишите запрос в SQL и выполните в DBeaver.