小白求教: mysql 怎么实现排序后新增一列并分区段赋值,比如分数排名前 20%的就是绩效 A,后 10%的就是绩效 C

2019-05-26 09:40:52 +08:00
 ditie

比如数据表 kaohe 的字段有 id,department,date,userid,score。

需求有三个: 1、怎么根据 score 在一个语句里分月度、分部门进行组内排序,以及当月全体排序?

2、怎么能多一列来显示自动分布的绩效?排名前 20%的就是绩效 A,后 10%的就是绩效 C

3、怎么把这个排序和新增后的绩效结果全部插入到一个新表里?

我是 MySQL 数据库,木有 row_number ()函数

7504 次点击
所在节点    MySQL
67 条回复
xuanbg
2019-05-27 11:02:50 +08:00
@ditie 其实是 4 次,1 次 insert,3 次 update,不需要存储过程,当然,你把这 3 个操作写到一个存储过程里面也是可以的。
tudouxiong
2019-05-27 11:05:51 +08:00
窗口函数,需要 mysql 8 以后
LeeSeoung
2019-05-27 14:00:05 +08:00
先查一遍总数 按分数倒序排 ,然后 case when 判断 rownum<total*0.2 则 A ……这样可以不
ditie
2019-05-28 13:01:25 +08:00
@Beeethoven 是的,现在打算分步骤了,不打算一步到位。说实话,java 我一点都不会
ditie
2019-05-28 13:01:47 +08:00
@Alexhohom 好的,后面我试试
ditie
2019-05-28 13:02:17 +08:00
@xuanbg 那我试一下,确实还是分步骤好操作
ditie
2019-05-28 13:02:38 +08:00
@LeeSeoung rownum<total*0.2 这个方式好,厉害了,谢谢大佬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/567720

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX