Oracle按分区排名

--解析函数第二种分区:分区解析

--求部门的收入排名

--解析函数 规律 解析函数() over(partition by 字段 order by 字段)
--在先分区,再字段排序以后,每个区分别进行某种解析计算
SELECT deptno,empno,ename,sal,
       dense_rank() over(PARTITION BY deptno ORDER BY nvl(sal,
0) DESC) x
FROM emp

DEPTNO

EMPNO

ENAME

SAL

X

10

7839

KING

8000

1

10

7782

CLARK

7450

2

10

9000

xiaoming

 

3

20

7369

SMITH

8000

1

20

7788

SCOTT

7000

2

20

7902

FORD

6000

3

20

7566

JONES

5975

4

20

7876

ADAMS

4100

5

30

7698

BLAKE

6850

1

30

7499

ALLEN

5600

2

30

7844

TURNER

5500

3

30

7521

WARD

5250

4

30

7654

MARTIN

5250

4

 

案例

_        各种新闻(娱乐,体育,8挂,军事)的单击率在前3名记录

_        每种图片(计算机类,考试类,文学),销售量在前10名记录

_        每个班的前3名

 

 

行数

--行数解析(比rownum更高效,主要用于分页)
SELECT * FROM (
SELECT deptno,empno,ename,sal,
       row_number() over(ORDER BY nvl(sal,
0) DESC) x
FROM emp) t
WHERE x BETWEEN
5 AND 10;

DEPTNO

EMPNO

ENAME

SAL

X

30

7698

BLAKE

6850

5

20

7902

FORD

6000

6

20

7566

JONES

5975

7

30

7499

ALLEN

5600

8

30

7844

TURNER

5500

9

30

7521

WARD

5250

10

 

你可能感兴趣的:(oracle,体育)