🗒️SQL 코드 풀이
SELECT employee_id , department_id
FROM Employee
WHERE employee_id
IN
(
SELECT employee_id
FROM Employee
GROUP BY employee_id
HAVING COUNT(*) = 1
)
OR primary_flag = "Y"
1. 조건이 2개가 있다.
- primary_flag 1개 밖에 없는 경우
- primary_flag가 Y인 경우
2. 이 두가지를 WHERE로 필터링하여 출력하면 된다.
새로운 방법 (세로 행 합치기)
(
SELECT employee_id , department_id
FROM Employee
GROUP BY employee_id
HAVING COUNT(*) = 1
)
UNION ALL
(
SELECT employee_id , department_id
FROM Employee
WHERE primary_flag = "Y"
)
- UNION ALL 을 통해서 세로로 합칠 수 있다.
- 이런 경우 컬럼 구조, 데이터 타입 같은 것들이 다 일치해야 합칠 수 있다.
- 사실 이게 맨 처음 생각했던 방식인데, 세로로 합치는 법을 몰랐다...
📌 문제 코멘트
해당 문제를 포스팅하는 이유는 다음과 같다.
- WHERE IN을 잘 쓰지 않음
- OR 사용하지 않음 (여러 조건들을 걸어서 필터릴 할 생각을 못함)
- UNION ALL을 통해서 세로로 합치는 방법
→ 해당 문법에 대해서는 익숙해지자 !
📚문제
'♟️ 알고리즘 > Leetcode' 카테고리의 다른 글
[MySQL][Leet Code] 185. Department Top Three Salaries (Hard) (0) | 2025.03.08 |
---|---|
[MySQL][Leet Code]180. Consecutive Numbers (Medium) (0) | 2025.03.07 |
[MySQL][Leet Code] 619. Biggest Single Number (0) | 2025.03.05 |
[MySQL][Leet Code] 1070. Product Sales Analysis III (Medium) (0) | 2025.03.05 |
[MySQL][Leet Code] 550. Game Play Analysis IV (Medium) (0) | 2025.03.04 |