分组查询统计

1.png一列数据,现在要分成五组,分别是<30,30-60,60-90,90-180,>180,需要统计每个组里面的个数,这个sql怎么写

FineReport BIGDATA 发布于 2023-2-21 09:34
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-2-21 09:35(编辑于 2023-2-21 09:48)

select t.分类,count(t.处理时长) from (

select case when 处理时长>180 then '180以上'

when 处理时长>90 then '90-180'

when 处理时长>60 then '60-90'

when 处理时长>30 then '30-60'

else '30及以下' end as 分类,

处理时长

from 表

) t

group by t.分类

------------------修改后-------------------

select 

t.分类,

count(t.分类) as 个数

from (

SELECT 

case when DATEDIFF(day, field0012, GETDATE())>180 then '180以上'

when DATEDIFF(day, field0012, GETDATE())>90 then '90-180'

when DATEDIFF(day, field0012, GETDATE())>60 then '60-90'

when DATEDIFF(day, field0012, GETDATE())>30 then '30-60'

else '30及以下' end as 分类

FROM formmain_1141 

WHERE finishedflag = '0' 

AND field0047 = 'PVA01' 

) t

group by t.分类

  • BIGDATA BIGDATA(提问者) SELECT * , DATEDIFF(day, field0012, GETDATE()) AS 处理时长 FROM formmain_1141 WHERE finishedflag = \'0\' AND field0047 = \'PVA01\' 我怎么加进去
    2023-02-21 09:44 
  • CD20160914 CD20160914 回复 BIGDATA(提问者) 上面改了。。参考吧。
    2023-02-21 09:48 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-2-21 09:37

select fl,count(fl) [sl](

SELECT *,(CASE WHEN 处理时长<30 then 'a' when 处理时长>=30 and 处理时长<60 then 'b' when 处理时长>=60 and 处理时长<00 then 'c' when 处理时长>=90 and 处理时长<180 then 'd' else 'e') [fl] FROM TABLE ) t group by fl

最佳回答
0
心安Lv3见习互助
发布于2023-2-21 09:37

一组一组写吧。然后用union all 拼上

  • 3关注人数
  • 248浏览人数
  • 最后回答于:2023-2-21 09:48
    请选择关闭问题的原因
    确定 取消
    返回顶部