Oracle SQL實現日、月、周循環
站在用戶的角度思考問題,與客戶深入溝通,找到中寧網站設計與中寧網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:網站設計、網站制作、企業官網、英文網站、手機端網站、網站推廣、域名申請、雅安服務器托管、企業郵箱。業務覆蓋中寧地區。
許多業務報表系統都是按日、月、周時間區間統計數據,通常都是通過job調用存儲過程實現。
涉及到歷史數據跑批時需要實現區間時間段按日、周、月循環。
具體你的周是怎么確定的?
select to_char(to_date('20090101','yyyymmdd')+rownum+7,'iw') column_name from dual connect by rownum=to_date('20111201','yyyymmdd')-to_date('20090101','yyyymmdd')
思路:
1. 用以上語句生成月份表(具體參數自己調一下)
2. 然后和你要統計的表進行外連接,不存在的就是null ,用nvl(null,0) 表示統計數據為0
參考:
oracle中如何獲取中文的周數
默認oracle中,通過
select to_char(sysdate,'ww'),to_char(sysdate,'yyyy') from dual可以獲取到ORACLE的周數,但是這個給的周數以及年數是按照每年的第一天為第一周的算法,和我們平常的計算方法不一樣,平常的算法是按照星期來計算的,經過查找資料,to_char提供了新的參數:如下:
select to_char(sysdate,'iw'),to_char(sysdate,'iyyy') from dual
這個是按照IW = Week of year (1-52 or 1-53) based on the ISO standard
通常的ww是按照WW = Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the year.
比如2008年12月31日,按照不同的查詢方式的查詢結果如下:
select to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'ww') ww,
to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'yyyy') yyyy
from dual
查詢結果
序號 周 年度
1 53 2008
select to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'iw') iw,
to_char(to_date('2008-12,31', 'yyyy-mm-dd'), 'iyyy') iyyy
from dual
select max(years) || '年第' || week || '周',count(1)
from (select to_char(Y_TIME, 'yyyy') years,
to_char(Y_TIME+to_char(trunc(Y_TIME,'yyyy'),'d')-2,'WW') week
from T_B) group by week order by max(years),week
其中Y_TIME為你數據的時間字段,T_B為你要查詢的表,查出每周數據量
查詢結果示例如下:
2012年第31周 340
2012年第42周 6
2012年第43周 35
2012年第46周 7655
2013年第03周 18
2013年第04周 4
2013年第05周 2
2013年第06周 8
比如星期一到星期天算一周 查2011年7月完整周數 select max(count1) - 1 from (SELECT count(1) count1 FROM DUAL WHERE TO_CHAR(ADD_MONTHS(LAST_DAY(to_date('201107', 'yyyyMM')), -1) + LEVEL, 'DAY') = '星期一' CONNECT BY LEVEL
SELECT TO_CHAR(TO_DATE(20160316,'YYYYMMDD'),'W') FROM DUAL;
TO_CHAR函數可以獲取某一天是在該月中的第幾周,然后可以按照這個函數來分組了
新聞標題:oracle如何按周統計,數據怎么按周統計
本文URL:http://vcdvsql.cn/article44/dsisphe.html
成都網站建設公司_創新互聯,為您提供外貿網站建設、用戶體驗、網頁設計公司、電子商務、企業網站制作、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯