Il PARTITION BY
La clausola imposta l'intervallo di record che verrà utilizzato per ogni "GRUPPO" all'interno di OVER
clausola.
Nel tuo esempio SQL, DEPT_COUNT
restituirà il numero di dipendenti all'interno di quel dipartimento per ogni record di dipendente. (È come se stessi denominalizzando il emp
tavolo; restituisci comunque tutti i record nel emp
tabella.)
emp_no dept_no DEPT_COUNT
1 10 3
2 10 3
3 10 3 <- three because there are three "dept_no = 10" records
4 20 2
5 20 2 <- two because there are two "dept_no = 20" records
Se era presente un'altra colonna (ad es. state
) allora potresti contare quanti dipartimenti in quello Stato.
È come ottenere i risultati di un GROUP BY
(SUM
, AVG
, ecc.) senza aggregare il set di risultati (ovvero rimuovere i record corrispondenti).
È utile quando usi LAST OVER
o MIN OVER
funzioni per ottenere, ad esempio, lo stipendio più basso e più alto del dipartimento e quindi utilizzarlo in un calcolo rispetto a questo stipendio record senza una selezione secondaria, che è molto più veloce.
Leggi l'articolo collegato di AskTom per ulteriori dettagli.