您的位置:首页 > 数据库

SQL统计数据量

2016-04-07 18:24 253 查看

统计数据

很多时候遇到统计数据的问题,比如统计半年,每个月,每天24小时等等。

每月

假定数据库中为varchar2,如20160331165124.474

SELECT CYear, CMonth,
--, CDay ,CHour,CMin,
count(1) from (
SELECT * FROM(
SELECT to_date(substr(o.create_iodt,0,8),'yyyy-MM-dd') create_date, substr(create_iodt,0, 4) CYear, substr(create_iodt,5, 2) CMonth, substr(create_iodt,7, 2) CDay ,substr(create_iodt,9, 2) CHour,substr(create_iodt,11, 2) CMin, o.*
FROM SPS_ORDER o WHERE o.ORDER_TYPE_ID = 'EP' and o.IS_ROOT = 1 AND
o.create_iodt > to_char(SYSDATE-220,'yyyyMMddHH24miss') ||'.000'
) WHERE create_date > ADD_MONTHS(SYSDATE,-5)
) WHERE CYear = '2015' OR CYear = '2016'
group by  CYear, CMonth order by CYear, CMonth;


通过substr()函数对日期串进行截取,获取年、月、日、小时及分钟。注意,我的DB是Oracle的,所以从0截取和从1截取是一样的。

SYSDATE-220获取早于当前220天的时间。

ADD_MONTHS(SYSDATE, -5) 在当前月份上进行减5.

对CYear, CMonth进行group,同时使用count(1)对行进行统计。获取每个月的数据量。

每天
同样,统计每天数据量如下:

SELECT CYear, CMonth,
CDay ,--CHour,CMin,
count(1) from (
SELECT * FROM(
SELECT to_date(substr(o.create_iodt,0,8),'yyyy-MM-dd') create_date, substr(create_iodt,0, 4) CYear, substr(create_iodt,5, 2) CMonth, substr(create_iodt,7, 2) CDay ,substr(create_iodt,9, 2) CHour,substr(create_iodt,11, 2) CMin, o.*
FROM SPS_ORDER o WHERE o.ORDER_TYPE_ID = 'EP' and o.IS_ROOT = 1 AND
o.create_iodt > to_char(SYSDATE-220,'yyyyMMddHH24miss') ||'.000'
) WHERE create_date > ADD_MONTHS(SYSDATE,-5)
) WHERE CYear = '2015' OR CYear = '2016'
GROUP BY  CYear, CMonth, CDay ORDER BY CYear, CMonth, CDay;


每小时
统计某月每天每小时数据量

SELECT CYear, CMonth,
CDay ,CHour,--CMin,
count(1) from (
SELECT * FROM(
SELECT to_date(substr(o.create_iodt,0,8),'yyyy-MM-dd') create_date, substr(create_iodt,0, 4) CYear, substr(create_iodt,5, 2) CMonth, substr(create_iodt,7, 2) CDay ,substr(create_iodt,9, 2) CHour,substr(create_iodt,11, 2) CMin, o.*
FROM SPS_ORDER o WHERE o.ORDER_TYPE_ID = 'EP' and o.IS_ROOT = 1 AND
o.create_iodt > to_char(SYSDATE-220,'yyyyMMddHH24miss') ||'.000'
) WHERE create_date > ADD_MONTHS(SYSDATE,-5)
) WHERE CYear = '2016' and CMonth = '04'
group by  CYear, CMonth, CDay,CHour order by CYear, CMonth, CDay, CHour;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据 sql count group