홍동이의 성장일기

[LeetCode] 1907. Count Salary Categories (범위에 값이 없으면 0을 반환) 본문

Tool/SQL 코딩테스트 풀이

[LeetCode] 1907. Count Salary Categories (범위에 값이 없으면 0을 반환)

홍동2 2024. 1. 7. 22:28

 

Count Salary Categories - LeetCode

Can you solve this real interview question? Count Salary Categories - Table: Accounts +-------------+------+ | Column Name | Type | +-------------+------+ | account_id | int | | income | int | +-------------+------+ account_id is the primary key (column wi

leetcode.com

 

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
Comments