财源广进:开除摸鱼的员工

2026-01 思扣 困难

我是人力部门的狗腿子肚财,工号HR-007,专门负责干那些得罪人的活。

最近公司经营压力大得不得了,老板天天在办公室摔杯子。

昨天高层开了个会,决定启动 "财源广进"计划(其实就是裁员计划,但人力总监说这个名字吉利)。人力部门连夜加班,搞出了一套复杂的打分规则,美其名曰 "科学优化"

🏢 公司背景

人生无限有限公司,听名字很美好是吧?实际上最近连咖啡机的豆子都换成最便宜的了。市场部那边说是因为"经济周期调整",财务那边天天哭穷,老板脸上三个月没见笑容了。

据说上个月公司现金流已经紧张到要卖会议室的投影仪了。人力总监李总被老板骂了一通,回来就拍桌子:

"必须裁!但不是随便裁,要裁得有水平,裁得有数据支撑!"

📋 我的任务

李总把我叫到办公室,递给我一张纸:"肚财,这是'财源分'打分规则,你给我算出来每个人的分数。记住,要客观、要公正、要有数据支撑!"

我一看,好家伙,这规则复杂得跟高考试卷似的:

  1. 考勤分:低于平均工时的扣分

  2. 赔偿分:按入职年限算,赔偿金越高分越高

  3. 遛弯分:天天跑空中走廊摸鱼的扣分

  4. 文档分:飞书用得少的扣分

李总还特别嘱咐:"记住,我们不是裁员,是优化!​ 这个分数只是参考,最后名单还要'综合评估'。"

💻 技术准备

人力给我开了5张表的权限:

  1. employees(雇员表)​ - 人员基本信息

  2. attendance(考勤表)​ - 2025年全年打卡记录

  3. performance(绩效表)​ - 2025年上下半年绩效

  4. access_control(空中走廊门禁表)​ - 谁天天遛弯

  5. flybook_stats(飞书文档使用统计表)​ - 谁不积极用协同工具

李总说:"肚财,你把这些数据结合起来,按照规则算出分数。注意啊,规则要严格执行,但也不能太死板,懂我意思吧?"

我懂,我太懂了。就是既要看起来客观公正,又要能"灵活调整"嘛。不过我只能负责算,最终点人头不还是李总说了算,祈祷他妈的别把我干掉了。

🎯 计算规则详解

人力给的规则写得跟法律条文似的:

1. 考勤分

"考勤时长低于平均值的1分"

李总小声补充:"那些天天卡点下班的一个别放过!"

2. 赔偿分

"赔偿金低于10万元的3分,低于20万的2分,低于30万的1分。"

李总冷笑:"拿那些赔的少的开刀,太贵的裁不起啊!对了,赔偿按N+1算。我是个守法的老板。"

3. 遛弯分

"2025年,超过70天每天到空中走廊遛弯,且其中超过25天遛弯超过3次的,扣3分;超过60天每天到空中走廊遛弯,扣1分;60天以下的这次先放过他们。"

李总眯着眼睛:"那些天天跑出去抽烟聊天的,重点关照!"

4. 文档分

"互动人数、消息条数、日文档数均低于平均值的,3分;2个数据低于平均值的,1分"

李总敲着桌子:"现在都远程协作时代了,还不用飞书?跟不上时代!"

😰 我的困境

看着这堆表和规则,头都大了。

  • 考勤表里有些人一天打5次卡,有些人就1次,1次的干脆算他旷工,鬼知道是不是打个卡就去网吧玩游戏、去按摩店按摩了。

  • 空中走廊记录里,有人一天进出8次,是在里面跑马拉松吗?不过中饭时间应该不算吧,毕竟我司9-12点上班、14-18点上班,也算标准的朝九晚六了。遛弯是群体活动,可能会门禁尾随,所以用进两次或出两次来判断遛弯2次?怎么简单怎么来吧,一次门禁记录算1次遛弯,一进一出算两次。反正我不遛弯哈哈哈。

  • 飞书数据,有些人互动为0,是在修仙吗?万一人家出去外勤了,不一定用飞书啊。算鸟算鸟,领导说的按平均值来那就按他的办吧!对了,飞书是1月31日才正式全员使用的。

  • 赔偿金计算还要用入职日期和薪资,数学不好真是硬伤。

最要命的是,李总最后补了一句:"下周一我要看到初步名单,你周末加个班吧,把员工id和四种分加总的总分两列结果给我。"

今天是26年3月6日,周末跟女朋友约的白云山野战又泡汤了😣。我之前写的SQL不超过10行,这不得100行,为难我胖虎是吧?干!

异常用户监测 聚合函数 行列转化 高级条件过滤 CTE或SubQuery 多列分组 多连接条件 数学运算符 group by left join inner join avg case when count datediff + - * having
排名 用户名 得分 耗时(ms)
1 绿灯侠在谈判36486 100.0 130.19
2 无糖零卡 83.33 132.96
3 美无澜 80.0 115.29
4 勇度在回归树71735 23.33 128.17
5 X教授学不动了8413 23.33 129.32
6 惊奇队长在正则化85098 0.0 1169.87

employees,雇员信息表

id name hire_date title department salary(年薪,单位万元) previous_company level salary_increase(涨薪降薪幅度)
1 谢娜 20250103 运营 商业化 50 携程 P8 -7
2 董洁 20191019 产品 市场 27 Meta P6 -12
3 杨阳 20160824 运营 商业化 28 携程 P7 38
4 刘洋 20190801 服务 法务 21 Meta P6 20
5 孙悦 20240213 产品 用户增长 29 Google P7 -4

 attendance,考勤表

record_id employee_id punch_time
1 1 2025-01-01 08:06:00
2 1 2025-01-01 17:43:00
3 1 2025-01-02 09:30:00
4 1 2025-01-02 18:29:00
5 1 2025-01-03 09:39:00

performance,绩效表

id employee_id assessment_cycle result
1 1 2025H1 M
2 1 2025H2 M
3 2 2025H1 O
4 2 2025H2 O
5 3 2025H1 M+

access_control,空中走廊门禁表

id employee_id access_type timestamp
1 2 2025-01-03 17:17:09
2 2 2025-01-03 17:18:13
3 2 2025-01-03 12:44:37
4 2 2025-01-03 12:53:37
5 2 2025-01-07 16:13:49

flybook_stats,飞书使用统计日表

id employee_id stat_date daily_interaction daily_messages daily_documents
1 1 20250131 5 10 0
2 1 20250201 1 9 0
3 1 20250202 2 2 0
4 1 20250203 48 107 9
5 1 20250204 20 93 2

输出两列即可,employee_id(员工编号)、score(财源分)即可 ,无需排序。反正给领导看的话,我最后还是要导出到Excel装饰下的。

employee_id score
1 4
2 3
3 2
4 4
5 5

ID243 每个行业超过20年的公司  
中等 group by avg case when count datediff * / > 聚合函数 百分比计算 股市浅探 同花顺证券
ID258 用户听歌完成情况  
简单 group by inner join case when count sum / having >= 聚合函数 多表连接 音乐偏好分析 QQ音乐
ID259 歌曲流行度分析  
简单 group by inner join case when distinct count sum having > 聚合函数 多表连接 音乐偏好分析 QQ音乐
ID267 查询播放量为0的歌手及其专辑
简单 group by left join count having = 聚合函数 多表连接 Week22打卡 音乐偏好分析 QQ音乐
ID315 基于消费天数和平均单笔购买金额计算每个用户的RFM评分  
中等 group by inner join avg case when distinct sum datediff current_date 聚合函数 RFM模型 美团

MySQL 8.0

00:00