项目员工一:每个项目的平均工作年限
LeetCode 1075 · JOIN 后分组平均、ROUND
面试怎么回答
Project JOIN Employee,按 project_id 分组 ROUND(AVG(experience_years), 2)。我会提一句 AVG 会忽略 NULL,年限缺失时分母会变小,需要和业务确认口径。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
项目表记录项目和参与员工,员工表记录员工的工作年限。求每个项目参与员工的平均工作年限,保留两位小数。
表结构
- Project:project_id、employee_id;(project_id, employee_id) 为主键
- Employee:employee_id(主键)、name、experience_years
思路
关联拿到每个参与者的工作年限,按项目分组求 AVG,再 ROUND 两位小数。
参考解法
select project_id,round(avg(experience_years),2) average_years
from Project p join Employee e
on p.employee_id=e.employee_id
group by project_id
易错点
- 如果员工表里年限可能为空,AVG 会自动忽略 NULL,分母也随之变小,要确认这是否符合业务口径。