296 votes

Oracle "Partition By" Mot clé

Quelqu'un peut-il s’il vous plaît expliquer ce que le `` mot clé fait et donner un exemple simple de celui-ci en action, ainsi que pourquoi on voudrait l’utiliser ? J’ai une requête SQL écrite par quelqu'un d’autre et j’essaie de comprendre ce qu’il fait.

Un exemple de partition par :

Les exemples que j’ai vu en ligne semblent un peu trop approfondies.

298voto

Guy Points 5465

L' PARTITION BY clause définit la plage d'enregistrements qui seront utilisés pour chaque "GROUPE" au sein de l' OVER de la clause.

Dans votre exemple, SQL, DEPT_COUNT retourne le nombre d'employés au sein du département pour chaque enregistrement de l'employé. (C'est comme si votre de-nomalising l' emp tableau, vous avez toujours renvoyer tous les enregistrements dans l' emp table.)

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

Si il y avait une autre colonne (par exemple, state) alors on pourrait compter le nombre de ministères dans cet État.

Il est semblable à obtenir les résultats d'un GROUP BY (SUM, AVG, etc.) sans l'agrégation de l'ensemble de résultats.

Il est utile lorsque vous utilisez l' LAST OVER ou MIN OVER des fonctions pour obtenir, par exemple, le plus bas et le plus haut salaire dans le département et ensuite l'utiliser dans un calulation contre cette des enregistrements de salaire sans un sous, sélectionnez, qui est beaucoup plus rapide.

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

30voto

user60890 Points 295

C'est l'extension SQL appelé google analytics. Le "plus" dans l'instruction select indique oracle que la fonction est une fonction analytique, et non à un groupe en fonction. L'avantage de l'utilisation de google analytics est que vous pouvez collecter des sommes, des comptes, et beaucoup plus avec juste un seul passage à travers les données au lieu d'une boucle dans les données avec les sous sélectionne ou pire, PL/SQL.

Il n'a pas l'air déroutant au premier abord, mais ce sera une seconde nature rapidement. On n'explique pas mieux, puis Tom Kyte. Si le lien ci-dessus est grande.

Bien sûr, la lecture de la documentation est un must.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X