Oracle
 sql >> Base de données >  >> RDS >> Oracle

Partition Oracle par mot-clé

La PARTITION BY La clause définit la plage d'enregistrements qui seront utilisés pour chaque "GROUP" dans le OVER clause.

Dans votre exemple SQL, DEPT_COUNT renverra le nombre d'employés au sein de ce service pour chaque enregistrement d'employé. (C'est comme si vous dénomalisiez le emp table; vous retournez toujours chaque enregistrement dans le emp tableau.)

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

S'il y avait une autre colonne (par exemple, state ) alors vous pourriez compter le nombre de départements dans cet État.

C'est comme obtenir les résultats d'un GROUP BY (SUM , AVG , etc.) sans agréger le jeu de résultats (c'est-à-dire supprimer les enregistrements correspondants).

C'est utile lorsque vous utilisez le LAST OVER ou MIN OVER fonctions pour obtenir, par exemple, le salaire le plus bas et le plus élevé du département, puis l'utiliser dans un calcul par rapport à ce salaire enregistré sans une sous-sélection, ce qui est beaucoup plus rapide.

Lisez l'article AskTom lié pour plus de détails.