WITH CTE AS(
SELECT account_id,
CASEWHEN income <20000THEN"Low Salary"WHEN income >50000THEN"High Salary"ELSE"Average Salary"ENDAS category
FROM Accounts),
CTE_C AS(
SELECT"Low Salary"AS Category
UNIONSELECT"Average Salary"AS Category
UNIONSELECT"High Salary"AS Category
) #need a tableof category to make leftjoin#>>> prevent those category without value in CTE from disappearing
SELECT CTE_C.Category, COUNT(account_id) AS accounts_count
FROM CTE_C
LEFTJOIN CTE ON CTE_C.Category = CTE.Category
GROUPBY CTE_C.Category
SELECT"Low Salary"AS Category,
SUM(CASEWHEN income<20000THEN1ELSE0end) AS accounts_count
FROM Accounts
UNIONSELECT"Average Salary" Category,
SUM(CASEWHEN income >=20000AND income <=50000THEN1ELSE0END) AS accounts_count
FROM Accounts
UNIONSELECT"High Salary" category,
SUM(CASEWHEN income>50000THEN1ELSE0END) AS accounts_count
FROM Accounts
SELECT'Low Salary'as category, COUNT(account_id) as accounts_count
FROM Accounts
WHERE income<20000UNIONSELECT'Average Salary'as category, COUNT(*)
FROM Accounts
WHERE income>=20000AND income<=50000UNIONSELECT'High Salary'as category, COUNT(*)
FROM Accounts
WHERE income>50000