返回介绍

solution / 1000-1099 / 1075.Project Employees I / README

发布于 2024-06-17 01:03:31 字数 2222 浏览 0 评论 0 收藏 0

1075. 项目员工 I

English Version

题目描述

项目表 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。

 

请写一个 SQL 语句,查询每一个项目中员工的 平均 工作年限,精确到小数点后两位

查询结果的格式如下:

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 表:
+-------------+---------------+
| project_id  | average_years |
+-------------+---------------+
| 1       | 2.00      |
| 2       | 2.50      |
+-------------+---------------+
第一个项目中,员工的平均工作年限是 (3 + 2 + 1) / 3 = 2.00;第二个项目中,员工的平均工作年限是 (3 + 2) / 2 = 2.50

解法

方法一:内连接 + GROUP BY 分组

我们可以通过内连接将两张表连接起来,然后通过 GROUP BY 分组,最后使用 AVG 函数求工作年限的平均值。

# Write your MySQL query statement
SELECT project_id, ROUND(AVG(experience_years), 2) AS average_years
FROM
  Project
  JOIN Employee USING (employee_id)
GROUP BY 1;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文