Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Posso agrupar em consulta SQL com função de janela?


A primeira coisa a lembrar é que as funções em janela (como OVER() cláusula) trabalham no resultado da consulta. Ou seja:o servidor primeiro executa a consulta e só então aplica a função windowed conforme definido por você.

Isso significa que você pode realmente usar a função em janela e a cláusula group by na mesma consulta, mas precisa encapsulá-la, assim:
SELECT department_id,
       min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;

No entanto, concordo que este não é um bom lugar para usar a função de janela. A proposta de Matt é melhor aqui (ROW_NUMBER() em CTE ou subquery , selecionando apenas as linhas desejadas no SELECT principal ).