Lo primero que debe recordar es que las funciones de ventana (como OVER()
cláusula) trabajar en el resultado de la consulta. Es decir:el servidor primero ejecuta la consulta y solo luego aplica la función de ventana definida por usted.
Esto significa que en realidad puede usar la función de ventana y la cláusula group by en la misma consulta, pero necesita encapsularla, así:
SELECT department_id,
min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;
Sin embargo, estoy de acuerdo en que este no es un buen lugar para usar la función de ventana. La propuesta de Matt es mejor aquí (ROW_NUMBER()
en CTE
o subquery
, luego seleccione solo las filas deseadas en main SELECT
).