有一组数据,想对数据分成不同组并记录频数,但是现在的SQL写出来组中无数据的分组没了,怎么能所有组都

 有一组数据,想对数据分成不同组并记录频数,但是现在的SQL写出来组中无数据的分组没了,怎么能所有组都在然后不在组中的频数为0。

select TO_NUMBER(x) as x,fz,count(fz) from (

select case when ATTRIBUTE2<'3295' then '<3295'

when ATTRIBUTE2>='3295' and ATTRIBUTE2<'3296' then '3295-3296'

 when ATTRIBUTE2>='3296' and ATTRIBUTE2<'3297' then '3296-3297'

 when ATTRIBUTE2>='3297' and ATTRIBUTE2<'3298' then '3297-3298'

 when ATTRIBUTE2>='3298' and ATTRIBUTE2<'3299' then '3298-3299'

 when ATTRIBUTE2>='3299' and ATTRIBUTE2<'3300' then '3299-3300'

 when ATTRIBUTE2>='3300'  then '>=3300'

 end as fz,

 case when ATTRIBUTE2<'3295' then '3294.5'

when ATTRIBUTE2>='3295' and ATTRIBUTE2<'3296' then '3295.5'

 when ATTRIBUTE2>='3296' and ATTRIBUTE2<'3297' then '3296.5'

 when ATTRIBUTE2>='3297' and ATTRIBUTE2<'3298' then '3297.5'

 when ATTRIBUTE2>='3298' and ATTRIBUTE2<'3299' then '3298.5'

 when ATTRIBUTE2>='3299' and ATTRIBUTE2<'3300' then '3299.5'

 when ATTRIBUTE2>='3300'  then '>=3300.5'

 end as x

 from 

(

SELECT 

equip_id,ATTRIBUTE2

FROM MT_DATA_RECORD_YZ_OCV1

WHERE 

equip_id='2681.1'

AND WORKCELL_ID ='58985.1'

AND TO_CHAR(record_date,'YYYYMMDDHH24')<= TO_CHAR(SYSdate,'YYYYMMDD')||'20'

AND TO_CHAR(record_date,'YYYYMMDDHH24')>= TO_CHAR(TO_CHAR(SYSdate,'YYYYMMDD')-1) ||'20'

ORDER BY tag_record_date desc )) group by fz,x

order by x

image.png

类似这样,所有分组都在,数据不在组内的频数为0image.png

SQL 帆软用户YbG5J0kkjo 发布于 2023-5-26 15:14
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
取消
  • 1关注人数
  • 130浏览人数
  • 最后回答于:2023-5-26 15:14
    请选择关闭问题的原因
    确定 取消
    返回顶部