ROW_NUMBER в WHERE при отборе последнего баланса клиента
Нужен последний по дате баланс каждого клиента. Вы пишете:
SELECT client_id, dt, balance
FROM balances
WHERE ROW_NUMBER() OVER (PARTITION BY client_id ORDER BY dt DESC) = 1
Что будет с этим запросом?
- Вернёт по одной строке на клиента, но медленно, потому что окно считается для всей таблицы
- Вернёт первую по физическому порядку строку каждого клиента вместо последней по дате
- Запрос завершится с ошибкой: оконные функции нельзя использовать в WHERE
- Вернёт все строки таблицы: условие с оконной функцией всегда истинно
