Python技术迷

偷吃公司零食,被通报批评。。

刚看到个贴子,说有运营同事上班时间偷吃公司产品,还“引诱”其他人摸鱼,结果被公司通报+记过。

Image

这事吧,真不能一刀切地看。有网友说“就是吃点东西而已”,但从程序员视角来看,规矩不能随便破。代码出了bug你说是“小事”,可影响上线照样是大问题。

这个偷吃不是重点,引诱别人摸鱼才是本质问题,一旦带节奏影响氛围,公司必须出手。

但也别太紧绷,职场氛围要守规也得有人情味。别让一个通报变成寒气。总的来说还是守住底线,轻松摸鱼可以,别变成带头“放毒”的人。【备注:文末可领最新资料】

面试题:查询员工的累计薪水

今天我们来聊一个看起来平平无奇、但面试里出镜率巨高的算法题:查询员工的累计薪水。

说实话,这题我刚入职那年被SQL面得死去活来,后来发现你只要掌握个两招,瞬间就能从“SQL搬砖仔”变身“数据魔术师”!

那我们先把题目捋清楚:公司有个工资表 Salaries,里面包含字段 employee_id, salary, month。现在老板想查每个员工按月份累计的总薪资,比如张三1月1万、2月2万,那到2月就是3万,对吧?

很多人第一反应是用 SUM(salary),然后 GROUP BY employee_id,但!这样只能算总和,根本做不到按月累计。

你要实现这种“前缀求和”的效果,👊得靠一把好用的窗口函数!

我上代码:

import pandas as pd

# 模拟工资表
df = pd.DataFrame({
'employee_id': [1, 1, 1, 2, 2],
'month': ['2024-01', '2024-02', '2024-03', '2024-01', '2024-02'],
'salary': [10000, 12000, 11000, 15000, 16000]
})

# 转换为datetime方便排序
df['month'] = pd.to_datetime(df['month'])

# 累计薪资计算,按员工ID分组,再按月份排序,计算累计和
df['acc_salary'] = df.sort_values('month').groupby('employee_id')['salary'].cumsum()

print(df)

运行后输出是这样:

   employee_id     month  salary  acc_salary
0            1 2024-01-01   10000       10000
1            1 2024-02-01   12000       22000
2            1 2024-03-01   11000       33000
3            2 2024-01-01   15000       15000
4            2 2024-02-01   16000       31000

你看这结果是不是就是老板想要的?💰💰💰

这里几个点值得说说:

1)cumsum() 就是 Pandas 里的前缀和神器,对标SQL里的 SUM(...) OVER (PARTITION BY ... ORDER BY ...); 2)如果你写SQL,那就是:

SELECT
  employee_id,
month,
  salary,
SUM(salary) OVER (PARTITIONBY employee_id ORDERBYmonth) AS acc_salary
FROM Salaries;

写SQL的朋友看到 OVER 就笑了,这玩意有点像“AI里Attention机制”,关注自己和之前的上下文。

再说一嘴,这题还能衍生出好多变种:

  • 按季度累计?那你得先写个 DATE_TRUNC('quarter', month);
  • 累计工资达到10万的月份?可以再加个 WHERE;
  • 工资断崖式下降?用 LAG() 函数前后对比一下!

说实话,这类题是那种“你觉得简单,考官却能从你写法判断段位”的东西。比如你用 JOIN + 子查询 也能做,但那是青铜段位。会 窗口函数,那才是王者!

对了,☝我前几天用 DeepSeek-R1 本地模型在 PyCharm 里问它怎么写,它几乎1秒就写出这段SQL,还顺手帮我生成了可视化图表,真是爆了!

掌握窗口函数 = 数据题面试不慌。感兴趣的朋友可以试试,不管是 Pandas 还是 SQL,能写出这种累计值逻辑,才是数据处理的基本功!

-END-

我为大家打造了一份RPA教程,完全免费:https://www.songshuhezi.com/rpa.html

🔥虎哥私藏精品🔥

虎哥作为一名老码农,整理了全网最全《python高级架构师资料合集》,总量高达650GB,点击下方公众号回复关键字 python 全部免费领