코딩 테스트 연습/[프로그래머스][리트코드] MySQL

1075. Project Employees I

duswjd_data 2025. 10. 17. 09:24

문제

https://leetcode.com/problems/project-employees-i/description/


문제 설명

  • 각 project_id별로 그 프로젝트에 참여한 직원들의 평균 경력(experience_years)을 계산해서,
    소수점 둘째 자리까지 반올림(ROUND) 한 값을 구하기

정답 코드

SELECT p.project_id,
       ROUND(SUM(e.experience_years)/COUNT(p.project_id),2) AS average_years
FROM project p LEFT JOIN employee e ON p.employee_id = e.employee_id
GROUP BY p.project_id

개선점

  1. SUM()/COUNT()로도 가능하지만 → AVG(e.experience_years)로 계산 가능
  2. 이 문제에서는 모든 프로젝트에 직원이 존재하므로 LEFT JOIN 대신 JOIN(= INNER JOIN)이 논리적으로 더 적합
      필요한 데이터만 정확히 매칭 가능 (불필요하게 NULL 값 포함할 가능성 없음)

개선 코드

SELECT p.project_id,
       ROUND(AVG(e.experience_years),2) AS average_years
FROM project p JOIN employee e ON p.employee_id = e.employee_id
GROUP BY p.project_id