В типовом запросе сначала формируются строки и фильтры внутреннего SELECT, затем вычисляется DENSE_RANK, а внешний запрос фильтрует готовый ранг. Физический план может отличаться.
Как выполняется этот SQL-запрос с подзапросом и DENSE_RANK (порядок выполнения)?
В типовом запросе сначала формируются строки и фильтры внутреннего SELECT, затем вычисляется DENSE_RANK, а внешний запрос фильтрует готовый ранг. Физический план может отличаться.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В типовом запросе сначала формируются строки и фильтры внутреннего SELECT, затем вычисляется DENSE_RANK, а внешний запрос фильтрует готовый ранг. Физический план может отличаться.
DENSE_RANK присваивает одинаковый ранг равным значениям сортировки и не оставляет пропусков после группы. Оконную функцию нельзя использовать в WHERE того же уровня PostgreSQL, поэтому применяют подзапрос или CTE. Внешний ORDER BY отдельно задаёт порядок выдачи. Без самого SQL нельзя разобрать конкретные соединения, условия и план исполнения.