mysql group by 组内排序
来源:互联网 发布:怎样打开网络共享 编辑:程序博客网 时间:2024/05/29 11:01
根据部门来分组,显示各员工在部门里按薪水排名名次.
显示结果预期如下:
+-------+--------+----------+------+
| 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,SQL 实现
select empid,deptid,salary,rank from (
select heyf_tmp.empid,heyf_tmp.deptid,heyf_tmp.salary,@rownum:=@rownum+1 ,
if(@pdept=heyf_tmp.deptid,@rank:=@rank+1,@rank:=1) as rank,
@pdept:=heyf_tmp.deptid
from (
select empid,deptid,salary from heyf_t10 order by deptid asc ,salary desc
) heyf_tmp ,
(select @rownum :=0 , @pdept := null ,@rank:=0) a
) result ;
结果演示
+-------+--------+----------+------+
| 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 |
+-------+--------+----------+------+
9 rows in set (0.00 sec)
显示结果预期如下:
+-------+--------+----------+------+
| 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,SQL 实现
select empid,deptid,salary,rank from (
select heyf_tmp.empid,heyf_tmp.deptid,heyf_tmp.salary,@rownum:=@rownum+1 ,
if(@pdept=heyf_tmp.deptid,@rank:=@rank+1,@rank:=1) as rank,
@pdept:=heyf_tmp.deptid
from (
select empid,deptid,salary from heyf_t10 order by deptid asc ,salary desc
) heyf_tmp ,
(select @rownum :=0 , @pdept := null ,@rank:=0) a
) result ;
结果演示
+-------+--------+----------+------+
| 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 |
+-------+--------+----------+------+
9 rows in set (0.00 sec)
阅读全文
0 0
- MySQL 组内排序(Group By)
- mysql group by 组内排序
- mysql group by组内排序
- mysql group by 组内排序
- mysql group by 组内排序
- mysql group by 组内排序方法
- mysql group by 组内排序
- mysql group by组内排序
- Group by 分组后排序,组内过滤
- mysql group by排序问题
- mysql group by排序问题
- Mysql group by 排序问题
- Mysql group by 排序问题
- mysql group by排序问题
- mysql group by内排序的实现以及having和where 条件语句查询的区别
- mysql order by内排序
- 【Mysql】group by中的排序问题
- Mysql 利用group by 分组排序
- 归并排序算法及各种排序的实现
- 引用了Dll,编译时说命名空间不存在
- VR或AR的精度和分辨率可以进一步提升!
- 对抗样本与对抗训练
- 软件开发工具栈
- mysql group by 组内排序
- 在tab页内点击链接打开新的同级新tab页
- 汇编语言8086笔记
- 必须不含字符 [子级], 因为该类型的内容类型为“仅元素”
- 面试例题4—main函数执行完毕后,是否会再执行一段代码
- POJ 1273 Drainage Dithches 最大流(EK,模板题)
- AVL树—— C++实现
- text-overflow的用法
- linux下C和shell调用的popen函数