Oracle按指定日期、按截止日期、分组统计sql

1. 统计指定日期数据

SELECT COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
CREATE_TIME >= TO_DATE('2021-11-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
AND CREATE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss');

因为字段为日期类型,所以需要将查询条件的字符串转为日期类型。将查询条件转换为字段一致的数据类型,而不是将字段类型转换为查询条件的类型,这样可以利用在字段上建立的索引,可以提高效率。

日期格式转换:

select to_date('2021-12-29 10:14:59','yyyy-mm-dd hh24:mi:ss') as CURT_DATE from dual;
返回输出:
2021-12-29 10:14:59

其中hh24表示按二十四小时制返回两位小时,mi表示两位表示分钟数。 

2. 统计指定日期以前的累计数据

SELECT COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
CREATE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss');

3. 统计指定日期分组数据

SELECT BRANCH_CODE, COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
CREATE_TIME >= TO_DATE('2021-11-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
AND CREATE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss')
GROUP BY BRANCH_CODE;

分组统计时,需要同时返回分组列的值。

4. 统计指定日期以前的累计分组数据

SELECT BRANCH_CODE, COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
CREATE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss')
GROUP BY BRANCH_CODE;

分组统计时,需要同时返回分组列的值。

5. 指定日期按分组统计锁定状态

SELECT BRANCH_CODE, COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
UPDATE_TIME >= TO_DATE('2021-11-18 00:00:00','yyyy-mm-dd hh24:mi:ss')
AND UPDATE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss')
AND LOCK_STATUS = 'Y'
GROUP BY BRANCH_CODE;

状态更新时,更新时间会进行同步更新。

6. 指定日期前到期时间分组统计

SELECT BRANCH_CODE, COUNT(*) AS COUNT_COUNT_ADD FROM SHLD_DEVICE WHERE 
EXPIRE_TIME <= TO_DATE('2021-11-18 23:59:59','yyyy-mm-dd hh24:mi:ss')
GROUP BY BRANCH_CODE;

到期状态会变化的情况下,不能用一周内每天的到期数量进行累加得到周的到期,因为出现到期后,会出现有客户重新申请更新Token导致其到期时间的变化。

锁定状态,关闭状态等都是一样的,会出现一段时间内存在状态变化的情况。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿20

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值