mysql 根据分数分等级_MySQL 给结果集分等级

本文介绍了如何在MySQL中根据员工的工资进行等级划分,提供了两种方法:一种是使用子查询,另一种是利用MySQL 8.0的窗口函数dense_rank()。详细展示了SQL语句及其执行结果。
摘要由CSDN通过智能技术生成

备注:测试数据库版本为MySQL 8.0

如需要scott用户下建表及录入数据语句,可参考:

scott建表及录入数据sql脚本

一.需求

给表EMP中的工资分等级,并允许捆绑,返回下列结果集:

±----±--------+

| rnk | sal |

±----±--------+

| 1 | 800.00 |

| 2 | 950.00 |

| 3 | 1100.00 |

| 4 | 1250.00 |

| 4 | 1250.00 |

| 5 | 1300.00 |

| 6 | 1500.00 |

| 7 | 1600.00 |

| 8 | 2450.00 |

| 9 | 2850.00 |

| 10 | 2975.00 |

| 11 | 3000.00 |

| 11 | 3000.00 |

| 12 | 5000.00 |

±----±--------+

二.解决方案

窗口函数会使等级查询简单。如果暂不支持窗口函数,可以使用标量子查询

2.1 子查询方法

select (select count(distinct b.sal)

from emp b

where b.sal <= a.sal) as rnk,

a.sal

from emp a

测试记录

mysql> select (select count( b.sal)

-> from emp b

-> where b.sal &

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值