oracle根据时间对数据进行统计每天生成的量

今天突然有个需求,说是要统计每天的数据对应生成了多少,对于oracle一贯不熟的话懵逼了,只好查百度



首先将创建日期进行格式化,oracle的时间格式化为      例子:SELECT to_char(SYSDATE,'yyyy"年"mm"月"dd"日"') FROM DUAL;

参考地址    http://blog.youkuaiyun.com/songyanfei1205/article/details/67634937


然后就是进行分组查询了

参考地址    http://www.studyofnet.com/news/247.html


下面是我自己写的SQL

select count(crt),crt from (SELECT to_char(CREATEDDATE,'yyyymmdd') as crt FROM MERGEECARD_LOG) group by crt order by crt


效果为:





就是所需求的效果了,顺便说一下,oracle中如何以日期来查询数据


select * from 表名 where to_char(DATE_TRAVEL,'yyyy-mm-dd')='2014-01-01'


参考地址为    http://bbs.youkuaiyun.com/topics/390900305?page=1



Oracle 数据库中按天统计每天数据,有以下几种常见情况及对应的 SQL 实现: ### 统计指定月份每天数据 若要统计指定月份(如 2013 年 5 月)每天数据,可使用如下 SQL 语句: ```sql select trunc(datecol) 日期,sum(数) 数和,count(1) 数据 from tablex where to_char(datecol,'yyyymm') = '201305' group by trunc(datecol); ``` 此 SQL 语句通过 `to_char(datecol,'yyyymm')` 筛选出指定月份的数据,再用 `trunc(datecol)` 按天分组,最后使用 `sum(数)` 统计总和,`count(1)` 统计数据 [^1]。 ### 统计一段时间每天数据 若要统计一段时间(如 2018 年 7 月 20 日到 2018 年 8 月 20 日)内每天数据,可使用如下 SQL 语句: ```sql select a.time,nvl(b.num,0) as num from ( select to_char(to_date('2018/07/20', 'yyyy-mm-dd') + rownum - 1, 'yyyy-mm-dd') as time from dual connect by rownum <= trunc(to_date('2018/08/20', 'yyyy/mm/dd') - to_date('2018/07/20', 'yyyy/mm/dd')) + 1 ) a left join ( select time,count(time) as num from ( SELECT to_char(INPUT_DATE,'yyyy-mm-dd') as time FROM ORDER_REGISTRATION_ where INPUT_DATE between to_date('2018/07/20', 'yyyy/mm/dd') and to_date('2018/08/20', 'yyyy/mm/dd') + 1 ) group by time order by time ) b on a.time = b.time order by a.time; ``` 该 SQL 语句先通过 `connect by` 生成指定时间段内的所有日期,再使用左连接将这些日期与实际数据进行关联,使用 `nvl` 函数确保无数据的日期数据显示为 0 [^3]。 ### 统计归档日志每天数据 若要统计 Oracle 数据每天及每小时产生归档日志的数据,可使用如下 SQL 语句: ```sql alter session set nls_date_format='yyyy.mm.dd hh24:mi:ss'; select trunc(completion_time) as ARC_DATE, count(*) as COUNT, round((sum(blocks * block_size) / 1024 / 1024), 2) as ARC_MB from v$archived_log group by trunc(completion_time) order by trunc(completion_time); ``` 此 SQL 语句先设置日期格式,再通过 `trunc(completion_time)` 按天分组,使用 `count(*)` 统计记录数,`round((sum(blocks * block_size) / 1024 / 1024), 2)` 计算归档日志的大小(MB) [^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值