SQL

[mysql] 1907. Count Salary Categories - 테이블을 만들지 않고 열 추가하기

김랑해 2024. 4. 9. 16:37

https://leetcode.com/problems/count-salary-categories/description/

위의 문제 풀이 시작

 

with tbl as(
    select account_id, income, case when
    income < 20000 then 'Low Salary'
    when income between 20000 and 50000 then 'Average Salary'
    else 'High Salary'
    end as category
    from accounts
)

select category, count(*) as accounts_count
from tbl
group by category

이미 틀렸음..ㅋㅋ 예상한 결과긴 하다

average salary값이 없으면 0으로 표기해야하는데 이걸 못한 것

그러면 with절에서 먼저 손을 봐줘야하는데..

 

그러면 애초에 high, low, average행을 하나씩 만들어서union 해주고 결과 도출하는 곳에서 count(*) -1 을 해주면 되겠다

레츠기릿 ㄱㄱ

 

 

 

with tbl as(
    select account_id, income, case when
    income < 20000 then 'Low Salary'
    when income between 20000 and 50000 then 'Average Salary'
    else 'High Salary'
    end as category
    from accounts
    UNION ALL
    SELECT 0 AS account_id, 0 AS income,'Average Salary' AS category
    UNION ALL
    SELECT 0 AS account_id, 0 AS income,'High Salary' AS category
    UNION ALL
    SELECT 0 AS account_id,0 AS income,'Low Salary' AS category
)

select category, count(*)-1 as accounts_count
from tbl
group by category;

 

근데..뭔가 더 깔끔하게 풀 수 있는 방법이 있지 않을까...?ㅜ

 

 

 

<LEARNING POINT

 테이블을 만들지 않고 새롭게 열을 추가하는 방법
- ex) SELECT 0 as id, 'High Salary' as 'category' FROM tbl 해서 union으로 붙여주면 됨