Table: Project
+-------------+---------+
| Column Name | Type |
+-------------+---------+
| project_id | int |
| employee_id | int |
+-------------+---------+
(project_id, employee_id)는 이 테이블의 기본 키입니다.
employee_id는 Employee 테이블에 대한 외래 키입니다.
이 테이블의 각 행은 employee_id를 가진 직원이 project_id를 가진 프로젝트에서 일하고 있음을 나타냅니다.
Table: Employee
+------------------+---------+
| Column Name | Type |
+------------------+---------+
| employee_id | int |
| name | varchar |
| experience_years | int |
+------------------+---------+
employee_id는 이 테이블의 기본 키입니다. experience_years는 NULL이 아님이 보장됩니다.
이 테이블의 각 행은 한 명의 직원에 대한 정보를 포함합니다.
문제
모든 직원의 평균 경력 연수를 각 프로젝트에 대해 2자리로 반올림하여 보고하는 SQL 쿼리를 작성하세요.
결과 테이블은 어떤 순서로 반환해도 됩니다.
쿼리 결과 형식은 다음 예시와 같습니다.
Example 1:
Input:
Project table:
+-------------+-------------+
| project_id | employee_id |
+-------------+-------------+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 4 |
+-------------+-------------+
Employee table:
+-------------+--------+------------------+
| 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 |
+-------------+---------------+
설명 : 첫 번째 프로젝트의 평균 경력 연수는 (3 + 2 + 1) / 3 = 2.00이고, 두 번째 프로젝트의 평균 경력 연수는 (3 + 2) / 2 = 2.50입니다.
✏️ 풀이
import pandas as pd
def project_employees_i(project: pd.DataFrame, employee: pd.DataFrame) -> pd.DataFrame:
df = pd.merge(project, employee, how='inner', on='employee_id')
result = df.groupby('project_id')['experience_years'].mean().reset_index(name='average_years')
return result
1. project, employee 데이터프레임 merge
2. project_id별로 평균 경력 연수 구하기
'[코딩테스트] > [Pandas]' 카테고리의 다른 글
[LeetCode - Pandas] (Easy) 1050. Actors and Directors Who Cooperated At Least Three Times (0) | 2025.04.24 |
---|---|
[LeetCode - Pandas] (Easy) 1068. Product Sales Analysis I (0) | 2025.04.23 |
[LeetCode - Pandas] (Easy) 1084.Sales Analysis III (0) | 2025.04.22 |
[LeetCode - Pandas] (Easy) 1141. User Activity for the Past 30 Days I (0) | 2025.04.22 |
[LeetCode - Pandas] (Easy) 1148. Article Views I (0) | 2025.04.21 |