Mysql——分组排序加序列号

CREATE TABLE IF NOT EXISTS `employee` (
  `empid` int(11) DEFAULT NULL,
  `deptid` int(11) DEFAULT NULL,
  `salary` decimal(10,2) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `employee` (`empid`, `deptid`, `salary`) VALUES
(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);
<span style="font-family: Monaco, Consolas, Courier, 'Lucida Console', monospace; font-size: 14px; line-height: 21px; white-space: pre; widows: auto;">是这样的我想实现新加一列代表每个部门的工资等级,比如</span><pre name="code" class="sql">+-------+--------+----------+
| 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 |
+-------+--------+----------+
//实现下面结果
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
SELECT empid,deptid,salary,rank FROM 
    (SELECT *,@rownum:=@rownum+1 AS rownum,IF(@pa=ff.deptid,@rank:=@rank+1,@rank:=1) AS rank,@pa:=ff.deptid 
    FROM 
       (SELECT empid,deptid,salary FROM employee GROUP BY deptid,salary ORDER BY deptid ASC, salary DESC) ff,(SELECT @rank:=0,@rownum:=0,@pa=NULL) tt) result



 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨润泽林

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值