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

Partizione Oracle per parola chiave

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.