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

2019 年 5 月 26 日
 ditie

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

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

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

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

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

8391 次点击
所在节点    MySQL
67 条回复
tairan2006
2019 年 5 月 26 日
答案是用 Python
lihongjie0209
2019 年 5 月 26 日
不懂 sql 的话直接在代码里实现.
leriou
2019 年 5 月 26 日
case when
DefoliationM
2019 年 5 月 26 日
很简单 使用游标
ditie
2019 年 5 月 26 日
@tairan2006 并不会呀。。。
ditie
2019 年 5 月 26 日
@lihongjie0209 代码里更不会了。。。
Cat73
2019 年 5 月 26 日
MySQL 有 count,有 limit,麻烦点的思路可以先查记录的 id,然后 where id in ( ... )
ditie
2019 年 5 月 26 日
@leriou case when 我会,但怎么表示前 20%这种分布?怎么进行总排序和组内排序?
ditie
2019 年 5 月 26 日
@DefoliationM 游标。。。我百度了下都没明白。。。
ditie
2019 年 5 月 26 日
@Cat73 想想就头大呀大佬
Huelse
2019 年 5 月 26 日
呃,我的理念是,任何多余的 where 条件都不写,全部交给语言去处理
ditie
2019 年 5 月 26 日
@Huelse 我已经听不懂了啊大佬
francis59
2019 年 5 月 26 日
太复杂的话要么写程序分析,要么复制到 excel 里用公式分析,excel 有不少统计分析的公式
Alexhohom
2019 年 5 月 26 日
前 20%可以在代码里实现
thedog
2019 年 5 月 26 日
用 rank() over(partition by ....)
您可以搜一下这个东西的用法
thedog
2019 年 5 月 26 日
哦,没有 row_number,那当我没说。。。
ditie
2019 年 5 月 26 日
@francis59 就是想后台 sql 直接出结果,前端网页就查看
ditie
2019 年 5 月 26 日
@thedog 给热心的你点赞
ditie
2019 年 5 月 26 日
@Alexhohom 是指什么代码呀,我前端似乎是 nodejs, 数据库就是 mysql 5.7
lolizeppelin
2019 年 5 月 26 日
over 是窗口函数 mysql 8.0 mariadb 10.2 以后支持

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

https://v2ex.xtra.eu.org/t/567720

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

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

© 2021 V2EX