SQL 语句-partition by
2016-05-11 14:50
417 查看
/****** ******/ 初始化数据 create table employee (empid int ,deptid int ,salary decimal(10,2)) insert into employee values(1,10,5500.00) insert into employee values(2,10,4500.00) insert into employee values(3,20,1900.00) insert into employee values(4,20,4800.00) insert into employee values(5,40,6500.00) insert into employee values(6,40,14500.00) insert into employee values(7,40,44500.00) insert into employee values(8,50,6500.00) insert into employee values(9,50,7500.00)
数据显示为
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排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
相关文章推荐
- windows环境中mysql忘记root密码的解决办法
- MySQL安装-Windows
- mysql 安装暂停
- Mysql分析性能(存储过程)
- MYSQL必知必会读书笔记 第十七章 组合查询
- oracle的minus 返回第一个表中有、第二个表中没有的数据
- 【Django】依赖auth.user的数据库迁移,以及admin用户非交互式创建
- SQL查询语句通配符与ACCESS模糊查询like的解决方法
- PL/SQL developer 导出CSV文件
- SQLite
- MySQL学习11:修改数据表(一)
- Mysql报错:1172 - Result consisted of more than one row
- SQL2008安装提示"Microsoft visual studio 2008早期之前的版本
- mysql数据库迁移到另一个硬盘上
- Excel导入Oracle数据库
- .Net Webconfig连接字符串中数据库实例名带'\'的问题
- mysql5.7 zip 以上版本安装方法
- 防安全漏洞开发规范
- 【数据库】数据库负载均衡、读写分离技术
- mysql relay log参数汇总