一.Oracle統計時間範圍內的日,周,月:
--獲取日期列表:
SELECT TO_CHAR(TO_DATE('20200601', 'yyyyMMdd') + ROWNUM - 1, 'yyyyMMdd') as daylist
FROM DUAL
CONNECT BY ROWNUM <= trunc(to_date('20200712', 'yyyyMMdd') - to_date('20200601', 'yyyyMMdd')) + 1
--獲取月份列表:
SELECT TO_CHAR(ADD_MONTHS(TO_DATE('201912', 'yyyyMM'), ROWNUM - 1),'yyyyMM') as monthlist
FROM DUAL
CONNECT BY ROWNUM <= months_between(to_date('202007', 'yyyyMM'), to_date('201912', 'yyyyMM')) + 1
--獲取周列表: 獲取自然周 以週一開始 -週日結束
SELECT trunc(to_DATE('20200622', 'YYYYMMDD') + (ROWNUM - 1) * 7, 'iw') AS mon,trunc(to_DATE('20200622', 'YYYYMMDD') + (ROWNUM - 1) * 7, 'iw') + 6 AS sun
FROM DUAL
CONNECT BY ROWNUM <= (trunc(to_DATE('20200712', 'YYYYMMDD'), 'iw') + 6 - trunc(to_DATE('20200622', 'YYYYMMDD'), 'iw')) / 7 + 1
二.Oracle統計時間範圍內,按日,周,月統計記錄數
--時間單位是每日
SELECT t.countNum From
(
SELECT to_char(signdate,'yyyymmdd'),count(1) countNum
FROM HMAOP_MEMBERSIGN_RECORD
WHERE 1 = 1
and telnum = '13677173658'
and signdate >=TO_DATE('20190101', 'YYYYMMDD')
and signdate <=TO_DATE('20200101', 'YYYYMMDD')
group by to_char(signdate,'yyyymmdd')
)t
--時間單位是每週,週一開始,週日結束
SELECT t.countNum From
(
SELECT TRUNC(signdate,'iw'),count(1) countNum
FROM HMAOP_MEMBERSIGN_RECORD
WHERE 1 = 1
and telnum = '13677173658'
and signdate >=TO_DATE('20190101', 'YYYYMMDD')
and signdate <=TO_DATE('20200101', 'YYYYMMDD')
group by TRUNC(signdate,'iw')
)t
--時間單位是每月
SELECT t.countNum From
(
SELECT to_char(signdate,'yyyymm'),count(1) countNum
FROM HMAOP_MEMBERSIGN_RECORD
WHERE 1= 1
and telnum = '13677173658'
and signdate >=TO_DATE('20190101', 'YYYYMMDD')
and signdate <=TO_DATE('20200101', 'YYYYMMDD')
group by to_char(signdate,'yyyymm')
)t