El OVER() Se necesita una cláusula para que SQL Server sepa exactamente cómo desea determinar cosas como RANK() . Qué RANK() ¿Qué espera si no proporciona a SQL Server un criterio de pedido? ¿El ganador de una carrera es el que tiene el tiempo más rápido, el más lento o el nombre en orden alfabético?
No es necesario que elimine el ORDER BY cláusula cuando agrega un ORDER BY cláusula dentro de OVER() . Estos se usan de forma independiente:uno para determinar el RANK() y el otro para dictar pedidos.
Entonces, por ejemplo, si quisiera devolver los finalistas de una carrera, pero ordenarlos del último lugar al primero, podría decir:
SELECT
name,
finish_time,
[rank] = RANK() OVER (ORDER BY finish_time) -- fastest first
FROM
dbo.race_table
ORDER BY
finish_time DESC; -- fastest last