[原创]oracle中decode()实现分组统计

2011-03-28

最近,在做项目数据查询的时候,需要实现统计某个字段为不同情况的记录数,然后按时间来分组。

字段heart_active是varchar(2)类型,只分为0和1两种类型。

脑袋里面最开始想到的就是用case when then 语句来实现。然后根据时间来分组。这样很快容易实现效果了。

但听网友说oracle里面有个函数decode()可以实现,由于不懂oracle函数,网上查了也一知半解的。

最后向网友请教,

 --方法一:

SELECT TRUNC(a.INPUT_DATE,'dd')AS Input_Date, a.HEART_ACTIVE,SUM(DECODE(a.HEART_ACTIVE, 1, 1, 0, 1))as Heart_Count

  FROM ext.rfid_fixed_heart a

  where  reader_id=1

 GROUPBY a.HEART_ACTIVE, TRUNC(a.INPUT_DATE,'dd')

 ORDERBY trunc(a.INPUT_DATE,'dd')DESC;

 

 -- --方法二:

SELECT TRUNC(a.input_date,'dd')as Input_Date,SUM(decode(a.heart_active,'0','1'))AS heart_active_0,

            SUM(decode(a.HEART_ACTIVE,'1','1'))AS HEART_ACTIVE_1

    FROM ext.rfid_fixed_heart a

  where reader_id=1

 GROUPBY TRUNC(a.input_date,'dd');

 

在这前面发现了个问题,就是INPUT_DATE插入的是YYYY-MM-DD 24HH:MI:SS格式的数据导致无法按日期来分组。

既然插入的是YYYY-MM-DD 24HH:MI:SS格式得数据,要按日期来排序就需要对INPUT_DATE使用TRUNC函数来截取日期值。

转载于:https://www.cnblogs.com/crystal-guoguo/archive/2013/02/27/2934653.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值