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