La prima cosa da ricordare è che le funzioni con finestra (come OVER()
clausola) lavorare sul risultato della query. Ovvero:il server esegue prima la query e solo dopo applica la funzione con finestra definita dall'utente.
Ciò significa che puoi effettivamente utilizzare la funzione con finestra e raggruppare per clausola nella stessa query, ma devi incapsularla, in questo modo:
SELECT department_id,
min(min(salary)) OVER (partition by department_id) as minsalary
FROM employees
GROUP BY department_id;
Tuttavia, sono d'accordo sul fatto che questo non è un buon posto per usare la funzione finestra. La proposta di Matt è la migliore qui (ROW_NUMBER()
in CTE
o subquery
, quindi selezionando solo le righe desiderate in SELECT
principale ).