dans -depth Discussion of Oracle's Rank () et dense_rank () Fonctions
Dans le domaine de l'analyse et du tri des données, Oracle fournit deux fonctions très différentes: Rank () et dense_rank (), qui a chacune des utilisations spécifiques. Cet article explorera les différences subtiles entre ces deux fonctions et leurs scénarios d'application.
La fonction rank () est allouée comme une ligne de la ligne en fonction de l'ordre spécifié, tandis que la fonction dense_rank () alloue des niveaux continus. Par exemple, considérez la scène suivante:
Dans cet exemple, bien que le salaire de RRR et NNN soit le même, la fonction Rank () alloue le même niveau (2) pour eux, et la fonction dense_rank () alloue les niveaux continus pour s'assurer qu'il n'y a pas de niveau de saut.
<code class="language-sql">SELECT empname, sal, RANK() OVER (ORDER BY sal) AS r, DENSE_RANK() OVER (ORDER BY sal) AS dr FROM emptbl;</code>
Empname | Sal | r | dr |
---|---|---|---|
rrr | 10000 | 2 | 2 |
nnn | 20000 | 3 | 3 |
mmm | 5000 | 1 | 1 |
kkk | 30000 | 4 | 4 |
fff | 40000 | 5 | 5 |
ddd | 40000 | 5 | 5 |
bbb | 50000 | 7 | 6 |
ccc | 50000 | 7 | 6 |
Pour trouver le salaire N dans le tableau (par exemple, le troisième salaire élevé), vous pouvez utiliser les demandes suivantes:
Le traitement de la valeur videLe comportement de
<code class="language-sql">SELECT sal FROM emptbl ORDER BY sal DESC LIMIT n-1, 1;</code>
Dans ce cas, la valeur vide est considérée comme ayant le niveau minimum (NULLS en premier), résultant en différents niveaux par rapport au niveau le plus élevé (NULLS LAST).
Conclusion
<code class="language-sql">SELECT empname, sal, RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) AS r, DENSE_RANK() OVER (PARTITION BY deptno ORDER BY sal NULLS FIRST) AS dr1 FROM emptbl;</code>
Empname | Sal | r | dr1 |
---|---|---|---|
fff | 40000 | 1 | 1 |
ddd | 40000 | 1 | 1 |
rrr | 10000 | 3 | 2 |
xxx | NULL | 2 | 3 |
Les fonctions Rank () et dense_Rank () d'Oracle fournissent deux méthodes de tri différentes de données. Comprendre leurs différences et leur utilisation appropriée, peuvent effectuer efficacement l'analyse des données et les tâches de fonctionnement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!