WITH TEMP2 AS (
SELECT *,
CASE
WHEN INCOME > 50000 THEN 'High Salary'
WHEN INCOME < 20000 THEN 'Low Salary'
ELSE 'Average Salary'
END AS SALARY_CATEGORY
FROM (
SELECT * FROM ACCOUNTS
UNION ALL
SELECT 0,0
UNION ALL
SELECT 0, 20000
UNION ALL
SELECT 0, 50001
) AS TEMP1
)
SELECT SALARY_CATEGORY AS 'category', COUNT(*)-1 AS 'accounts_count'
FROM TEMP2
GROUP BY SALARY_CATEGORY
소둑 구간 표본이 없는 경우 GROUP BY에 없어서 더미 데이터를 추가한다.
MySQL 2
WITH INCOME_LEVEL AS (
SELECT 'High Salary' AS CATEGORY
UNION ALL
SELECT 'Average Salary'
UNION ALL
SELECT 'Low Salary'
)
SELECT
IL.CATEGORY,
COALESCE(COUNT(I.CATEGORY), 0) AS ACCOUNTS_COUNT
FROM
INCOME_LEVEL IL
LEFT JOIN (
SELECT
CASE
WHEN INCOME > 50000 THEN 'HIGH SALARY'
WHEN INCOME BETWEEN 20000 AND 50000 THEN 'AVERAGE SALARY'
ELSE 'LOW SALARY'
END AS CATEGORY
FROM ACCOUNTS
) I
ON IL.CATEGORY = I.CATEGORY
GROUP BY IL.CATEGORY
댓글