🗄️ SQL и базы данных  ·  20 вопросов  ·  ~40 мин  ·  ⏱ Таймер 40:00  ·  Сложный  · 

Оконные функции

Оконная функция сохраняет строки, но смотрит на соседей или раздел. В тесте нужно отличить её от GROUP BY, определить PARTITION BY, выбрать порядок, разобраться в ничьих ROW_NUMBER, RANK и DENSE_RANK, а также заметить рамку по умолчанию в накопительном итоге. Почти каждый вопрос требует читать код или конкретный результат.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 40 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Чем SUM(amount) OVER () отличается от обычного SUM(amount)?
SQL
SELECT id, amount, SUM(amount) OVER () AS total
FROM orders;
Вопрос 2 из 20
Почему ROW_NUMBER() без OVER неверен?
SQL
SELECT ROW_NUMBER() FROM orders;
Вопрос 3 из 20
Можно ли использовать ROW_NUMBER() прямо в WHERE того же уровня запроса?
Вопрос 4 из 20
Какой запрос оставляет исходные строки и добавляет среднюю зарплату отдела?
Вопрос 5 из 20
Что задаёт пустое OVER ()?
Вопрос 6 из 20
Что делает PARTITION BY customer_id?
SQL
SELECT id, customer_id,
       SUM(amount) OVER (PARTITION BY customer_id) AS customer_total
FROM orders;
Вопрос 7 из 20
Что вычислит оконная сумма без PARTITION BY?
Вопрос 8 из 20
Как вычислить долю заказа в сумме своего клиента?
Вопрос 9 из 20
Что произойдёт, если добавить product_id к PARTITION BY customer_id?
Вопрос 10 из 20
Почему PARTITION BY не заменяет GROUP BY?
Вопрос 11 из 20
Для значений 100, 100, 90 какие номера даст RANK()?
SQL
SELECT score, RANK() OVER (ORDER BY score DESC)
FROM results;
Вопрос 12 из 20
Для тех же значений что даст DENSE_RANK()?
SQL
SELECT score, DENSE_RANK() OVER (ORDER BY score DESC)
FROM results;
Вопрос 13 из 20
Что гарантирует ROW_NUMBER() для равных score без дополнительного ключа?
Вопрос 14 из 20
Как сделать ROW_NUMBER воспроизводимым при равных created_at?
Вопрос 15 из 20
Как выбрать все товары, разделившие второе место по цене в категории?
Вопрос 16 из 20
Что вычисляет выражение?
SQL
SUM(amount) OVER (
  PARTITION BY customer_id
  ORDER BY created_at
  ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
)
Вопрос 17 из 20
Что возвращает LAG(amount) OVER (ORDER BY created_at)?
SQL
SELECT created_at, amount,
       LAG(amount) OVER (ORDER BY created_at) AS prev_amount
FROM payments;
Вопрос 18 из 20
Какое значение LAG вернёт для первой строки окна без указанного default?
Вопрос 19 из 20
Почему явная рамка ROWS важна при накопительной сумме с одинаковыми датами?
Вопрос 20 из 20
Как посчитать разницу с предыдущим платежом?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу