LeetCode:Database 42.项目员工 I
Posted Xiao Miao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode:Database 42.项目员工 I相关的知识,希望对你有一定的参考价值。
要求:请写一个SQL语句,查询每一个项目中员工的平均工作年限,精确到小数点后两位。
项目表 Project的结构:
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| project_id | int |
| employee_id | int |
+-------------+---------+
主键为(project_id, employee_id)。
employee_id是员工表Employee 表的外键。
员工表 Employee的结构:
+------------------+---------+
| Column Name | Type |
+------------------+---------+
| employee_id | int |
| name | varchar |
| experience_years | int |
+------------------+---------+
主键是 employee_id。
Project 表:
+-------------+-------------+
| project_id | employee_id |
+-------------+-------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+-------------+-------------+
Employee 表:
+-------------+--------+------------------+
| employee_id | name | experience_years |
+-------------+--------+------------------+
| 1 | Khaled | 3 |
| 2 | Ali | 2 |
| 3 | John | 1 |
| 4 | Doe | 2 |
+-------------+--------+------------------+
Result Table:
+-------------+---------------+
| project_id | average_years |
+-------------+---------------+
| 1 | 2.00 |
| 2 | 2.50 |
+-------------+---------------+
分析:
1.查询每个项目员工的平均工作年限,因此以项目id进行分组
2.由于数据来源于两张表,因此需要两张表自连接,连接条件为员工id,最终结果保留两位小数,使用round()函数
SQL语句:
select a.project_id,round(avg(b.experience_years),2) as average_years
from project a
join employee b
on a.employee_id=b.employee_id
group by a.project_id;
以上是关于LeetCode:Database 42.项目员工 I的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode:Database 90.使用唯一标识码替换员工ID