Lv2 - 조건에 맞는 사원 정보 조회하기

2025. 8. 1. 13:22·CODING TEST/MySQL

📌 문제 정보

- 문제 이름 : 프로그래머스 - (GROUP BY) 조건에 맞는 사원 정보 조회하기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/284527

 

 

 

📌 문제 요약

- HR_DEPARTMENT 테이블 : DEPT_ID(부서 ID), DEPT_NAME_KR(국문 부서명), DEPT_NAME_EN(영문 부서명), LOCATION(부서 위치)

- HR_EMPLOYEES 테이블 : EMP_NO(사번), EMP_NAME(사원 성명), DEPT_TO(부서 ID), POSITION(직책), EMAIL, COMP_TEL(전화번호), HIRE_DATE(입사일), SAL(연봉)

- HR_GRADE 테이블 : EMP_NO(사번), YEAR, HALF_YEAR(반기), SCORE(평가 점수)

- HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성. 2022년도의 평가 점수는 상,하반기 점수의 합을 의미하고, 평가 점수를 나타내는 컬럼의 이름은 SCORE.

 

예시)

DEPT_ID  DEPT_NAME_KR  DEPT_NAME_EN  LOCATION
D0001 법무팀 Law Dep 그렙타워 4층
D0002 인사팀 Human resources 그렙타워 4층
D0003 총무팀 General Affairs 그렙타워 4층

 

EMP_NO  EMP_NAME  DEPT_ID  POSITION  EMAIL  COMP_TEL  HIRE_DATE  SAL
2017002 정호식 D0001 팀장 hosick_jung@grepp.com 031-8000-1101 2017-03-01 65,000,000
2018001 김민석 D0001 팀원 minseock_kim@grepp.com 031-8000-1102 2018-03-01 60,000,000
2019001 김솜이 D0002 팀장 somi_kim@grepp.com 031-8000-1106 2019-03-01 60,000,000
2020002 김연주 D0002 팀원 yeonjoo_kim@grepp.com 031-8000-1107 2020-03-01 53,000,000
2020005 양성태 D0003 팀원 sungtae_yang@grepp.com 031-8000-1112 2020-03-01 53,000,000

 

EMP_NO  YEAR  HALF_YEAR  SCORE
2017002 2022 1 92
2018001 2022 1 89
2019001 2022 1 94
2020002 2022 1 90
2020005 2022 1 92
2017002 2022 2 84
2018001 2022 2 89
2019001 2022 2 81
2020002 2022 2 91
2020005 2022 2 81

 

출력)

SCORE  EMP_NO  EMP_NAME  POSITION  EMAIL
181 2020002 김연주 팀원 yeonjoo_kim@grepp.com

 

 

 

📌 내 풀이 및 코드

SELECT 
    SUM(hg.SCORE) AS SCORE,                -- 각 사원의 2022년도 상/하반기 점수를 합산하여 SCORE로 표시
    he.EMP_NO,                             -- 사번
    he.EMP_NAME,                           -- 사원 이름
    he.POSITION,                           -- 직책
    he.EMAIL                               -- 이메일
FROM HR_EMPLOYEES he                      -- HR_EMPLOYEES 테이블을 he로 별칭 지정
JOIN HR_GRADE hg ON he.EMP_NO = hg.EMP_NO -- 평가 테이블 HR_GRADE와 사번 기준으로 JOIN
WHERE hg.YEAR = "2022"                    -- 2022년도 평가만 대상으로 필터링
GROUP BY he.EMP_NO                        -- 사번별로 그룹핑 (사람마다 합산 점수를 구하기 위해)
ORDER BY SCORE DESC                       -- 점수 높은 순으로 정렬
LIMIT 1;                                  -- 가장 높은 사람 1명만 출력

- 테이블이 3개이길래 3개를 다 조회해야하는줄 알고 3개 조인을 어떻게 하는지 몰라서 고민했었던 것 같음.

- 점수가 가장 높은 사람 1명 출력이라길래 MAX()를 쓰려고 했는데 MAX를 써버리면 가장 높은 합계 점수만 알려주기 때문에 그 점수를 받은 사원이 누구인지 정보를 알 수 없음. 문제에서 누가 최고 점수인지 함께 출력하라고 해서 MAX를 쓰면 모호해짐.

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

- 테이블의 이름이 너무 길 때, 뒤에 특정 명칭을 써주면 축약해서 조인할 수 있다!

'CODING TEST > MySQL' 카테고리의 다른 글

Lv2 - 분기별 분화된 대장균의 개체 수 구하기  (0) 2025.08.01
Lv2 - 노션별 평균 역 사이 거리 조회하기  (0) 2025.08.01
Lv2 - 조건에 맞는 개발자 찾기  (0) 2025.07.30
Lv2 - 업그레이드 된 아이템 구하기  (0) 2025.07.30
Lv2 - 자동차 평균 대여 기간 구하기  (0) 2025.07.29
'CODING TEST/MySQL' 카테고리의 다른 글
  • Lv2 - 분기별 분화된 대장균의 개체 수 구하기
  • Lv2 - 노션별 평균 역 사이 거리 조회하기
  • Lv2 - 조건에 맞는 개발자 찾기
  • Lv2 - 업그레이드 된 아이템 구하기
iamyuunzo
iamyuunzo
https://github.com/iamyuunzo
  • iamyuunzo
    iamyuunzo
    iamyuunzo
  • 전체
    오늘
    어제
    • 분류 전체보기 (94)
      • Study (5)
        • App Developer (0)
        • Algorithm study (0)
        • Google AI Essentials (3)
      • Project (3)
        • 감행 (3)
        • Tokkit (0)
        • 다시, 봄 (0)
        • Clone Coding (0)
      • 자격증 모음 (5)
        • AWS Certification (1)
        • 정보처리기사 (0)
        • 빅데이터분석기사 (1)
        • TOEIC Speaking (3)
      • CODING TEST (79)
        • baekjoon (26)
        • programmers (20)
        • MySQL (31)
        • COS Pro (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    우리fis아카데미
    감행
    toeic speaking
    클라우드서비스개발
    java
    baekjoon
    프로젝트 리팩토링
    AWS Certified Cloud Practitioner
    COS Pro
    CLF-C02
    AWS Certification
    회고
    Programmers
    토익 스피킹
    백준
    우리fisa
    SQL
    우리 fisa
    프로그래머스
    회고록
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
iamyuunzo
Lv2 - 조건에 맞는 사원 정보 조회하기
상단으로

티스토리툴바