sql >> Base de Datos >  >> RDS >> Oracle

¿Puedo agrupar por consulta SQL con función de ventana?

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 ).