TIL 240130

hyeo71·2024년 1월 30일
0

2024 내배캠 AI 트랙

목록 보기
19/108

오늘 공부

  • SQL 111~115

112번

월급에 따라 월급이 높은 사람, 중간, 적은 사람의 수를 분류하는 문제

select
    case 
        when income<20000 then 'Low Salary'
        when income between 20000 and 50000 then 'Average Salary'
        else 'High Salary'
    end category,
    count(1) accounts_count
from accounts 
group by 1

처음엔 case를 사용하여 case값에 따른 그룹화를 하고 그에 대한 count를 구했다. 하지만 이 방법은 count가 0일 경우 category 값이 분류의 결과로 나오지 않기 때문에 다른 방법을 생각해야 했다.

한 개의 row를 만드는 방법을 알게 되고, 이를 union을 통한 결합으로 해당 문제를 해결했다.

select 'Low Salary' category, count(1) accounts_count
from accounts
where income<20000
union
select 'Average Salary' category, count(1) accounts_count
from accounts
where income between 20000 and 50000
union
select 'High Salary' category, count(1) accounts_count
from accounts
where income>50000

LeetCode는 union 관련 문제가 의외로 많이 나온다.


SQL 111~115

0개의 댓글