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 43.项目员工II

LeetCode:Database 17.员工奖金

LeetCode:Database 13.员工薪水中位数

LeetCode:Database 90.使用唯一标识码替换员工ID

LeetCode:Database 19.查询员工的累计薪水

LeetCode:Database 102.计算税后工资