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