1. 程式人生 > >我曾經面試過這樣一個問題

我曾經面試過這樣一個問題

浦發大佬曾問我一個問題,一個表只有成績和姓名,要求統計出各分數段的總人數:這個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

count(0)

還有個方式:比較兩個寫法     上面一個語句的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;