Вступить в клуб →
средняявопросPython и SQL для подготовки данных

ROW_NUMBER в WHERE при отборе последнего баланса клиента

Нужен последний по дате баланс каждого клиента. Вы пишете:

SELECT client_id, dt, balance
FROM balances
WHERE ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY dt DESC) = 1

Что будет с этим запросом?

  • Вернёт по одной строке на клиента, но медленно, потому что окно считается для всей таблицы
  • Вернёт первую по физическому порядку строку каждого клиента вместо последней по дате
  • Запрос завершится с ошибкой: оконные функции нельзя использовать в WHERE
  • Вернёт все строки таблицы: условие с оконной функцией всегда истинно

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела