订阅更新

项目员工一:每个项目的平均工作年限

SQL 实战 123 题 · 第 52 题 简单 约 2 分钟读完

LeetCode 1075 · JOIN 后分组平均、ROUND

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

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,分母也随之变小,要确认这是否符合业务口径。
刷题进度保存在当前浏览器