Oracle
 sql >> Database >  >> RDS >> Oracle

Posso raggruppare in una query SQL con la funzione finestra?

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