Det första att komma ihåg är att fönsterfunktioner (som OVER()
klausul) arbeta med resultatet av frågan. Det vill säga:Servern kör först frågan och först därefter tillämpar den fönsterfunktion som definierats av dig.
Det betyder att du faktiskt kan använda fönsterfunktion och grupp för sats i samma fråga, men du måste kapsla in det så här:
SELECT department_id,
min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;
Jag håller dock med om att detta inte är ett bra ställe att använda fönsterfunktion. Matts förslag är bäst här (ROW_NUMBER()
i CTE
eller subquery
, och välj sedan endast de önskade raderna i huvud SELECT
).