Das Erste, woran Sie denken sollten, ist, dass Fensterfunktionen (wie OVER()
-Klausel) bearbeiten das Ergebnis der Abfrage. Das heißt:Der Server führt zuerst die Abfrage aus und wendet erst dann die von Ihnen definierte Fensterfunktion an.
Das bedeutet, dass Sie tatsächlich eine Fensterfunktion und eine Gruppieren-nach-Klausel in derselben Abfrage verwenden können, aber Sie müssen sie wie folgt kapseln:
SELECT department_id,
min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;
Ich stimme jedoch zu, dass dies kein guter Ort ist, um die Fensterfunktion zu verwenden. Matts Vorschlag ist hier am besten (ROW_NUMBER()
im CTE
oder subquery
, und wählen Sie dann nur die gewünschten Zeilen im Haupt-SELECT
aus ).