inblog logo
|
An's Blog
    코딩테스트SQL

    [코딩테스트] 20. 조건에 맞는 사원 정보 조회하기

    윤설안's avatar
    윤설안
    Mar 25, 2025
    [코딩테스트] 20. 조건에 맞는 사원 정보 조회하기
    Contents
    테이블 index문제예시풀이

    테이블 index

    📌

    HR_DEPARTMENT 

    Column name
    Type
    Nullable
    DEPT_ID
    VARCHAR
    FALSE
    DEPT_NAME_KR
    VARCHAR
    FALSE
    DEPT_NAME_EN
    VARCHAR
    FALSE
    LOCATION
    VARCHAR
    FLASE

    HR_EMPLOYEES 

    Column name
    Type
    Nullable
    EMP_NO
    VARCHAR
    FALSE
    EMP_NAME
    VARCHAR
    FALSE
    DEPT_ID
    VARCHAR
    FALSE
    POSITION
    VARCHAR
    FALSE
    EMAIL
    VARCHAR
    FALSE
    COMP_TEL
    VARCHAR
    FALSE
    HIRE_DATE
    DATE
    FALSE
    SAL
    NUMBER
    FALSE

    HR_GRADE 

    Column name
    Type
    Nullable
    EMP_NO
    VARCHAR
    FALSE
    YEAR
    NUMBER
    FALSE
    HALF_YEAR
    NUMBER
    FALSE
    SCORE
    NUMBER
    FALSE

    문제

    💡
    HR_DEPARTMENT, HR_EMPLOYEES, HR_GRADE 테이블에서 2022년도 한해 평가 점수가 가장 높은 사원 정보를 조회하려 합니다. 2022년도 평가 점수가 가장 높은 사원들의 점수, 사번, 성명, 직책, 이메일을 조회하는 SQL문을 작성해주세요.

    예시

    notion image

    풀이

    ❗
    해당 직원들의 상반기, 하반기의 score를 더하는 쿼리를 구했다.
    SELECT emp_no, sum(score) score from HR_GRADE group by emp_no
    해당 직원들의 개인정보는 다른 테이블에 있기 때문에 join을 사용하여 개인정보들도 출력
    SELECT sum(score) score, hr.emp_no, he.emp_name, he.position, he.email from HR_GRADE hr inner join HR_EMPLOYEES he ON hr.emp_no = he.emp_no where group by emp_no
    이후 score를 내림차순으로 구한 뒤 가장 맨 위에 column 한개만 출력
    SELECT sum(score) score, hr.emp_no, he.emp_name, he.position, he.email from HR_GRADE hr inner join HR_EMPLOYEES he ON hr.emp_no = he.emp_no group by emp_no order by score desc limit 1
    문제에는 없지만 공동 1등이 존재 할 경우도 있다. 그럴 때는 subquery를 사용하여, score가 가장 높은 사람을 구한 뒤 해당 사원만 조회하면 된다
    SELECT EMP_NO, SUM(SCORE) SCORE FROM HR_GRADE GROUP BY EMP_NO HAVING SUM(SCORE) = ( SELECT MAX(TOTAL_SCORE) FROM ( SELECT EMP_NO, SUM(SCORE) SCORE TOTAL_ FROM HR_GRADE GROUP BY EMP_NO ) ntb );
    notion image
     
    Share article
    Contents
    테이블 index문제예시풀이

    An's Blog

    RSS·Powered by Inblog