https://leetcode.com/problems/count-salary-categories/description/
Column | Type |
account_id | int |
income | int |
Accounts 테이블:
- account_id : 테이블의 고유 키
- income : 월소득
다음의 급여 범주별로 은행 계좌 수를 계산하는 솔루션을 작성하십시오. 급여 범주는 다음과 같습니다:
"Low Salary": 모든 급여가 $20000 미만인 경우. "Average Salary": 급여가 $20000에서 $50000 범위에 포함되는 경우. "High Salary": 급여가 $50000을 초과하는 경우. 결과 테이블은 세 가지 범주를 모두 포함해야 합니다. 범주에 계정이 없는 경우 0을 반환하십시오.
결과 테이블의 순서는 임의로 해도 됩니다.
select
case
when income < 20000 then 'Low Salary'
when income <= 50000 then 'Average Salary'
else 'High Salary'
end category
from Accounts
먼저 각 데이터를 분류에 맞게 표시를 한다.
SELECT 'High Salary' category
UNION ALL
SELECT 'Low Salary'
UNION ALL
SELECT 'Average Salary'
각 범주에 맞는 새로운 쿼리를 생성한다.
WITH category AS (
SELECT 'High Salary' category
UNION ALL
SELECT 'Low Salary'
UNION ALL
SELECT 'Average Salary'
)
생성한 쿼리를 기존의 쿼리와 결합하기 위해서 with 구문을 사용해서 묶어준다.
select
case
when income < 20000 then 'Low Salary'
when income <= 50000 then 'Average Salary'
else 'High Salary'
end category,
count(*) accounts_count
from Accounts
group by category
기존 쿼리를 그룹화하여 그룹별 갯수를 count한다.
select *
from category c
left join
(select
case
when income < 20000 then 'Low Salary'
when income <= 50000 then 'Average Salary'
else 'High Salary'
end category,
count(*) accounts_count
from Accounts
group by category) accounts_count on c.category = accounts_count.category
두 쿼리를 결합한다.
WITH category AS (
SELECT 'High Salary' category
UNION ALL
SELECT 'Low Salary'
UNION ALL
SELECT 'Average Salary'
)
select
c.category,
COALESCE(accounts_count.accounts_count, 0) accounts_count
from category c
left join
(select
case
when income < 20000 then 'Low Salary'
when income <= 50000 then 'Average Salary'
else 'High Salary'
end category,
count(*) accounts_count
from Accounts
group by category) accounts_count on c.category = accounts_count.category
마지막으로 필요한 null값을 0으로 대체해서 출력하도록 하면 완료!
'코딩일기' 카테고리의 다른 글
SQL 코드카타 115 - Movie Rating (0) | 2024.07.11 |
---|---|
SQL 코드카타 114 - Exchange Seats (1) | 2024.07.11 |
SQL 코드카타 113 - Employees Whose Manager Left the Company (0) | 2024.07.10 |
SQL 코드카타 122 - Delete Duplicate Emails (0) | 2024.07.09 |
알고리즘 코드카타 112 - 행렬 테두리 회전하기 (0) | 2024.07.09 |