oracle统计时间区间

1、按天统计数据,没有补0 

SELECT
	b.DAY_TIME as abscissa_name,
	nvl( a.ct, 0 ) as total
FROM
	(
SELECT
	to_char( t.REQUEST_TIME, 'yyyy-MM-dd' ) birthday,
	count( 1 ) ct 
FROM
	ESB_LOG t 
GROUP BY
	to_char( t.REQUEST_TIME, 'yyyy-MM-dd' ) 
ORDER BY
	to_char( t.REQUEST_TIME, 'yyyy-MM-dd' ) ASC 
	) a right join (
SELECT
	TO_CHAR( TO_DATE( '2020-08-01', 'YYYY-MM-DD' ) + ROWNUM - 1, 'YYYY-MM-DD' ) DAY_TIME 
FROM
	DUAL CONNECT BY ROWNUM-1 <= TO_DATE( '2020-08-21', 'YYYY-MM-DD' ) - TO_DATE( '2020-08-01', 'YYYY-MM-DD' ) 
	) b ON a.birthday = b.DAY_TIME 
ORDER BY
	b.DAY_TIME

2、按月统计,没有补0

SELECT
	TO_CHAR( ADD_MONTHS( TO_DATE( '2020-08-20', 'yyyy-MM-dd' ), ROWNUM - 1 ), 'yyyy-MM' ) AS abscissa_name 
FROM
	DUAL CONNECT BY ROWNUM <= months_between(
	to_date( '2021-11-10', 'yyyy-MM-dd' ),
	to_date( '2020-08-20', 'yyyy-MM-dd' )) + 2;
	
	
	
	
SELECT
	to_char ( REQUEST_TIME, 'yyyy-mm' ) abscissa_name,
	count( * ) AS total 
FROM
	ESB_LOG 
WHERE
	to_char ( REQUEST_TIME, 'yyyy-mm-dd' ) BETWEEN '2020-08-20' 
	AND '2021-11-10' 
GROUP BY
	to_char ( REQUEST_TIME, 'yyyy-mm' );
	
	
SELECT
	b.abscissa_name,
	nvl ( a.total, 0 ) as total
FROM
	(
SELECT
	to_char ( REQUEST_TIME, 'yyyy-mm' ) abscissa_name,
	count( * ) AS total 
FROM
	ESB_LOG 
WHERE
	to_char ( REQUEST_TIME, 'yyyy-mm-dd' ) BETWEEN '2020-08-20' 
	AND '2021-11-10' 
GROUP BY
	to_char ( REQUEST_TIME, 'yyyy-mm' ) 
	) a
	RIGHT JOIN (
SELECT
	TO_CHAR ( ADD_MONTHS ( TO_DATE ( '2020-08-20', 'yyyy-MM-dd' ), ROWNUM - 1 ), 'yyyy-MM' ) AS abscissa_name 
FROM
	DUAL CONNECT BY ROWNUM <= months_between ( to_date ( '2021-11-10', 'yyyy-MM-dd' ), to_date ( '2020-08-20', 'yyyy-MM-dd' ) ) + 2 
	) b ON b.abscissa_name = a.abscissa_name 
ORDER BY
	b.abscissa_name

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码奴生来只知道前进~

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

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

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

打赏作者

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

抵扣说明:

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

余额充值