【携程】统计各部门加班员工占比
JOIN 连接聚合函数GROUP BY日期函数字符串函数用户行为分析面试真题
题目描述
来源:携程 SQL 面试真题
某公司需要根据员工信息和单日出勤记录,统计各部门加班员工所占比例。
数据表
staff_tb 员工信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| staff_id | BIGINT | 员工 ID |
| staff_name | VARCHAR | 员工姓名 |
| staff_gender | VARCHAR | 员工性别 |
| post | VARCHAR | 员工岗位类别 |
| department | VARCHAR | 员工所在部门 |
attendent_tb 出勤信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| info_id | BIGINT | 出勤信息 ID |
| staff_id | BIGINT | 员工 ID |
| first_clockin | DATETIME | 上班打卡时间 |
| last_clockin | DATETIME | 下班打卡时间 |
题目要求
- 工作时长严格大于 9.5 小时的员工定义为加班员工,恰好 9.5 小时不算加班。
- 加班员工占比 = 部门加班员工数 / 部门员工总数。
- 输出部门和加班员工占比,比例以百分数形式展示并四舍五入保留 1 位小数。
- 没有加班员工的部门也必须输出,占比为 0.0%。
- 按加班员工占比降序排列;占比相同时按部门升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| department | 员工所在部门 |
| ratio | 部门加班员工占比 |
数据样例
| staff_idPKBIGINT | staff_nameVARCHAR(50) | staff_genderVARCHAR(10) | postVARCHAR(50) | departmentVARCHAR(50) |
|---|---|---|---|---|
| 1 | Angus | male | Financial | dep1 |
| 2 | Cathy | female | Director | dep1 |
| 3 | Aldis | female | Director | dep2 |
| 4 | Lawson | male | Engineer | dep1 |
| 5 | Carl | male | Engineer | dep2 |
| 6 | Ben | male | Engineer | dep1 |
| 7 | Rose | female | Financial | dep2 |
输入数据显示 7 / 7 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里