la fonction Rank() est une fonction ananlytique pemettant d'assigner un numero d'ordre à un resultat un exemple simple :
SQL> conn scott/tiger
Connecté.
SQL> select empno,ename,sal from emp order by sal;
14 ligne(s) sélectionnée(s).
maintenant je veux assigné un numero d'ordre pour chaque employé en se basant sur son salaire :
SQL> select empno,ename,sal,rank() over(order by sal) as ord from emp;
14 ligne(s) sélectionnée(s).
on le meme numero d'ordre pour les employés ayant le meme salaire.
voire le post fonctions analytiques
SQL> conn scott/tiger
Connecté.
SQL> select empno,ename,sal from emp order by sal;
| EMPNO | ENAME | SAL |
| 7369 | SMITH | 800 |
| 7900 | JAMES | 950 |
| 7876 | ADAMS | 1100 |
| 7521 | WARD | 1250 |
| 7654 | MARTIN | 1250 |
| 7934 | MILLER | 1300 |
| 7844 | TURNER | 1500 |
| 7499 | ALLEN | 1600 |
| 7782 | CLARK | 2450 |
| 7698 | BLAKE | 2850 |
| 7566 | JONES | 2975 |
| 7788 | SCOTT | 3000 |
| 7902 | FORD | 3000 |
| 7839 | KING | 5000 |
14 ligne(s) sélectionnée(s).
maintenant je veux assigné un numero d'ordre pour chaque employé en se basant sur son salaire :
SQL> select empno,ename,sal,rank() over(order by sal) as ord from emp;
| EMPNO | ENAME | SAL | ORD |
| ---------- | ---------- | ---------- | ---------- |
| 7369 | SMITH | 800 | 1 |
| 7900 | JAMES | 950 | 2 |
| 7876 | ADAMS | 1100 | 3 |
| 7521 | WARD | 1250 | 4 |
| 7654 | MARTIN | 1250 | 4 |
| 7934 | MILLER | 1300 | 6 |
| 7844 | TURNER | 1500 | 7 |
| 7499 | ALLEN | 1600 | 8 |
| 7782 | CLARK | 2450 | 9 |
| 7698 | BLAKE | 2850 | 10 |
| 7566 | JONES | 2975 | 11 |
| 7788 | SCOTT | 3000 | 12 |
| 7902 | FORD | 3000 | 12 |
| 7839 | KING | 5000 | 14 |
14 ligne(s) sélectionnée(s).
on le meme numero d'ordre pour les employés ayant le meme salaire.
voire le post fonctions analytiques
0 comments:
Enregistrer un commentaire