财源广进:开除摸鱼的员工
我是人力部门的狗腿子肚财,工号HR-007,专门负责干那些得罪人的活。
最近公司经营压力大得不得了,老板天天在办公室摔杯子。
昨天高层开了个会,决定启动 "财源广进"计划(其实就是裁员计划,但人力总监说这个名字吉利)。人力部门连夜加班,搞出了一套复杂的打分规则,美其名曰 "科学优化"。
🏢 公司背景
人生无限有限公司,听名字很美好是吧?实际上最近连咖啡机的豆子都换成最便宜的了。市场部那边说是因为"经济周期调整",财务那边天天哭穷,老板脸上三个月没见笑容了。
据说上个月公司现金流已经紧张到要卖会议室的投影仪了。人力总监李总被老板骂了一通,回来就拍桌子:
"必须裁!但不是随便裁,要裁得有水平,裁得有数据支撑!"
📋 我的任务
李总把我叫到办公室,递给我一张纸:"肚财,这是'财源分'打分规则,你给我算出来每个人的分数。记住,要客观、要公正、要有数据支撑!"
我一看,好家伙,这规则复杂得跟高考试卷似的:
-
考勤分:低于平均工时的扣分
-
赔偿分:按入职年限算,赔偿金越高分越高
-
遛弯分:天天跑空中走廊摸鱼的扣分
-
文档分:飞书用得少的扣分
李总还特别嘱咐:"记住,我们不是裁员,是优化! 这个分数只是参考,最后名单还要'综合评估'。"
💻 技术准备
人力给我开了5张表的权限:
-
employees(雇员表) - 人员基本信息
-
attendance(考勤表) - 2025年全年打卡记录
-
performance(绩效表) - 2025年上下半年绩效
-
access_control(空中走廊门禁表) - 谁天天遛弯
-
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行,为难我胖虎是吧?干!
| 排名 | 用户名 | 得分 | 耗时(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 | 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 |
MySQL 8.0