SQL语句partitionby

database

empid       deptid      salary

----------- ----------- ---------------------------------------

1 10 5500.00

2 10 4500.00

3 20 1900.00

4 20 4800.00

5 40 6500.00

6 40 14500.00

7 40 44500.00

8 50 6500.00

9 50 7500.00

需求:根据部门分组,显示每个部门的工资等级。

SQL脚本:

SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) rank 

FROM employee

empid       deptid      salary                                  rank

----------- ----------- --------------------------------------- --------------------

1 10 5500.00 1

2 10 4500.00 2

4 20 4800.00 1

3 20 1900.00 2

7 40 44500.00 1

6 40 14500.00 2

5 40 6500.00 3

9 50 7500.00 1

8 50 6500.00 2

SQL脚本:

SELECT *

FROM

(SELECT *, Row_Number() OVER (partition by deptid ORDER BY salary desc) R

FROM employee) B

WHERE B.R =1

#只显示部门工资最高的

/****** ******/

 select *

from (

select name,学科,成绩,ROW_NUMBER() over (PARTITION by 学科 order by 成绩 desc) as num

from [XSBOOK].[dbo].[XKCJ]) T

where T.num <= 3 order by T.学科

name 学科 成绩 num

---------- ---------- ----------- --------------------

李四 数学 98 1

李四 数学 95 2

张三 数学 93 3

张三 英语 92 1

张三 英语 92 2

李四 英语 90 3

李四 语文 85 1

李四 语文 81 2

张三 语文 80 3

语法形式:ROW_NUMBER() OVER(PARTITION BY COL1 ORDER BY COL2)

解释:根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

以上是 SQL语句partitionby 的全部内容, 来源链接: utcz.com/z/532122.html

回到顶部