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.