Leetcode SQL50 (1907)

Pocketopi·2025년 4월 17일

[MYSQL] Leetcode

목록 보기
12/34

🔔 문제

LeetCode - Count Salary Categories
➔ 계정(ACCOUNTS) 테이블에서 소득(INCOME)을 기준으로 분류한 뒤, 각 범주에 해당하는 계정 수를 출력하라.
소득이 한 건도 없는 카테고리도 0으로 표시되어야 함.

🎯 풀이방법

🔑 핵심

먼저 카테고리 분류를 위한 SALARY 테이블을 직접 만들고
ACCOUNTS 테이블의 데이터를 CASE 문으로 분류
LEFT JOIN으로 모든 카테고리를 유지하면서 매칭된 계정 수를 계산

💻 전체 코드

WITH SALARY AS (
    SELECT 'High Salary' AS CATEGORY
    UNION ALL
    SELECT 'Average Salary'
    UNION ALL
    SELECT 'Low Salary'
),
ACCOUNTS_SORTED AS (
    SELECT CASE
        WHEN INCOME > 50000 THEN 'High Salary'
        WHEN INCOME >= 20000 THEN 'Average Salary'
        ELSE 'Low Salary' END AS CATEGORY
    FROM ACCOUNTS
)

SELECT S.CATEGORY, COUNT(A.CATEGORY) AS ACCOUNTS_COUNT
FROM SALARY S LEFT JOIN ACCOUNTS_SORTED A
ON S.CATEGORY = A.CATEGORY
GROUP BY S.CATEGORY

💡 핵심 문법 및 배운 점

  • WITH : CTE 생성
  • LEFT JOIN
profile
통계학/컴퓨터공학 전공 4학년 학생 DA뿌수기 일기장

0개의 댓글