我曾經面試過這樣一個問題
浦發大佬曾問我一個問題,一個表只有成績和姓名,要求統計出各分數段的總人數:這個sql 當時沒寫出來
現補上:
select case when sal between 0 and 1500 then '10-20'
when sal between 1500 and 3000 then '21-30'
else '81-100' end, count(0) 人數
from emp
group by case when sal between 0 and 1500 then '10-20'
when sal between 1500 and 3000 then '21-30'
else '81-100' end
order by
還有個方式:比較兩個寫法 上面一個語句的order by 可以不要!!
SELECT (case when sal >= 0 and sal < 1500 then '10-20'
when sal >= 1500 and sal < 3000 then '20-30'
else 'other' end) as cases, count(1) as "人數"
from emp
WHERE sal >= 900 and sal < 8000
GROUP BY (case when sal >= 0 and sal < 1500 then '10-20'
when sal >= 1500 and sal < 3000 then '20-30'
else 'other' end);
select case
when sal >= 0 and sal < 1500 then
'[0,1500)'
when sal >= 1500 and sal < 3000 then
'[1500,3000)'
else
'[other)'
end sal_ranges,
count(0)
from emp
group by case
when sal >= 0 and sal < 1500 then
'[0,1500)
when sal >= 1500 and sal < 3000 then
'[1500,3000)'
else
'[other)'
end;