我曾经面试过这样一个问题

浦发大佬曾问我一个问题,一个表只有成绩和姓名,要求统计出各分数段的总人数:这个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;


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值