홍동이의 성장일기
[LeetCode] 1907. Count Salary Categories (범위에 값이 없으면 0을 반환) 본문
SELECT 'Low Salary' as category
, COUNT(*) as accounts_count
FROM accounts
WHERE income < 20000
UNION
SELECT 'Average Salary' as category
, COUNT(*) as accounts_count
FROM accounts
WHERE income BETWEEN 20000 AND 50000
UNION
SELECT 'High Salary' as category
, COUNT(*) as accounts_count
FROM accounts
WHERE income > 50000
💡 문제 풀이
SELECT CASE
WHEN income < 20000 THEN 'Low Salary'
WHEN income <= 50000 THEN 'Average Salary'
ELSE 'High Salary' END AS category
, COUNT(*) as accounts_count
FROM accounts
GROUP BY category
처음에는 CASE 문을 이용하여 범위를 나누고 계정을 count해주었다.
그런데 마지막 TEST CASE에서 'Average Salary' 범주가 없는 테이블이 나와 문제를 해결할 수 없었다.
(조건: 범주에 계정이 없으면 0을 반환합니다.)
따라서 범주별로 테이블을 만든 후, UNION으로 합쳐주는 방법을 선택했다.
728x90
'Tool > SQL 코딩테스트 풀이' 카테고리의 다른 글
[LeetCode] 601. Human Traffic of Stadium (연속된 id 가져오기) (0) | 2024.04.04 |
---|---|
[LeetCode] 1934. Confirmation Rate (특정 조건에 부합하는 확률 구하기) (0) | 2024.03.18 |
[LeetCode] 1341. Movie Rating (Union vs. Union All) (2) | 2024.01.03 |
[LeetCode] 1204. Last Person to Fit in the Bus (누적합계 구하기) (1) | 2023.12.30 |
[LeetCode] 1193. Monthly Transactions I (Date_format 날짜 함수) (0) | 2023.12.24 |
Comments