Description
Table: Project
| Column Name | Type |
|---|---|
| project_id | int |
| employee_id | int |
- (
project_id,employee_id) is the primary key of this table. employee_idis a foreign key to Employee table.- Each row of this table indicates that the employee with
employee_idis working on the project withproject_id.
Table: Employee
| Column Name | Type |
|---|---|
| employee_id | int |
| name | varchar |
| experience_years | int |
employee_idis the primary key of this table. It’s guaranteed thatexperience_yearsis notNULL.- Each row of this table contains information about one employee.
Problem Statement
Write an SQL query that reports the average experience years of all the employees for each project, rounded to 2 digits.
Return the result table in any order. The query result format is in the following example.
Example 1:
Input:
Projecttable:
| project_id | employee_id |
|---|---|
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
Employeetable:
| employee_id | name | experience_years |
|---|---|---|
| 1 | Khaled | 3 |
| 2 | Ali | 2 |
| 3 | John | 1 |
| 4 | Doe | 2 |
Output:
| project_id | average_years |
|---|---|
| 1 | 2.00 |
| 2 | 2.50 |
Explanation:
- The average experience years for the first project is
(3 + 2 + 1) / 3 = 2.00and for the second project is(3 + 2) / 2 = 2.50
Solution
In order to find average_years, you need information of experience_years for each employee_id. You have to join Project table with Employee table. Then, you need to group the data by project_id and calculate the average of experience_years for each group. Finally, you need to round the average_years to two decimal places.
1SELECT
2 project_id, ROUND(AVG(experience_years), 2) AS average_years
3 FROM Project p
4 JOIN Employee e
5 ON p.employee_id = e.employee_id
6 GROUP BY p.project_id;


Comments