[leetcode]1789. Primary Department for Each Employee

김준석·2024년 3월 8일

코딩테스트 - SQL

목록 보기
80/96

문제

https://leetcode.com/problems/primary-department-for-each-employee/description/?envType=study-plan-v2&envId=top-sql-50

포인트
1. 1차 부서 (Y)를 구하는 것.
2. 단 employee_id가 한개 밖에 없다면 (N)을 출력

풀이

SELECT
    employee_id,
    department_id
FROM
    Employee
WHERE 1=1
    AND primary_flag = 'y'
    OR employee_id IN (SELECT employee_id
                       FROM Employee
                       GROUP BY employee_id
                       HAVING COUNT(employee_id)=1)

후기

처음에는 아래처럼 CASE 문을 써서 했는데 자꾸 NULL값이 나왔다..
아마 GROUP BY 이후에 계산을 하는 거라 그런듯..

SELECT
    employee_id,
    CASE
        WHEN COUNT(employee_id)=1 THEN department_id
        WHEN primary_flag='Y' THEN department_id
    END AS department_id
FROM
    Employee
GROUP BY
    employee_id

0개의 댓글