sql統計時間出現斷點的相關情況
Question:
有一表,其資料如下:
時間 數
2006/01/01 xxx.xx
2006/01/02 xxx.xx
2006/01/03 xxx.xx
2006/01/04 xxx.xx
.......... ......
統計結果要如下:
期間 sum數
2006/01/01(星期五)~2006/01/03(星期日) xxx.xx
2006/01/04(星期一)~2006/01/10(星期日) xxx.xx
...... ....
Answer:按自然的星期來統計SQL> select * from t;
LOGDATE RN
----------- ----
2006-11-22 1
2006-11-23 2
2006-11-24 3
..........
2006-12-19 28
2006-12-20 29
29 rows selected
SQL>
SQL> SELECT TO_CHAR(TRUNC(MIN(B.LOGDATE)), 'YYYY-MM-DD') || '(' ||
2 TO_CHAR(TRUNC(MIN(B.LOGDATE)), 'Day') || ')~' ||
3 TO_CHAR(TRUNC(MAX(B.LOGDATE)), 'YYYY-MM-DD') || '(' ||
4 TO_CHAR(TRUNC(MAX(B.LOGDATE)), 'Day') || ')' AS weekday,
5 C.TOTAL AS total
6 FROM T B,
7 (SELECT DECODE(TO_CHAR(A.LOGDATE, 'd'),
8 1,
9 TO_CHAR(A.LOGDATE, 'WW') - 1,
10 TO_CHAR(A.LOGDATE, 'WW')) AS WEEKDAY,
11 SUM(A.RN) AS TOTAL
12 FROM T A
13 GROUP BY DECODE(TO_CHAR(A.LOGDATE, 'd'),
14 1,
15 TO_CHAR(A.LOGDATE, 'WW') - 1,
16 TO_CHAR(A.LOGDATE, 'WW'))) C
17 WHERE DECODE(TO_CHAR(B.LOGDATE, 'd'),
18 1,
19 TO_CHAR(B.LOGDATE, 'WW') - 1,
20 TO_CHAR(B.LOGDATE, 'WW')) = C.WEEKDAY
21 GROUP BY C.TOTAL
22 ORDER BY weekday
23 /
WEEKDAY TOTAL
------------------------------------- ----------
2006-11-22(星期三)~2006-11-26(星期日) 15
2006-11-27(星期一)~2006-12-03(星期日) 63
2006-12-04(星期一)~2006-12-10(星期日) 112
2006-12-11(星期一)~2006-12-17(星期日) 161
2006-12-18(星期一)~2006-12-20(星期三) 84
這個方法比較優越:
SELECT * FROM TEST02;
TIME1 NUM1
---------- ----------
23-11月-06 1
24-11月-06 2
25-11月-06 3.........
25-2月 -07 95
26-2月 -07 96
27-2月 -07 97
TIME1 NUM1
---------- ----------
28-2月 -07 98
01-3月 -07 99
02-3月 -07 100
已選取 100 個資料列.
SQL> SELECT TO_CHAR(NEXT_DAY(TIME1, 2), 'YYYY/MM/DD'), SUM(NUM1)
2 FROM TEST02
3 GROUP BY TO_CHAR(NEXT_DAY(TIME1, 2), 'YYYY/MM/DD');
TO_CHAR(NE SUM(NUM1)
---------- ----------
2006/11/27 10
2006/12/04 56
2006/12/11 105
2006/12/18 154
2006/12/25 203
2007/01/01 252
2007/01/08 301
2007/01/15 350
2007/01/22 399
2007/01/29 448
2007/02/05 497
2007/02/12 546
2007/02/19 595
2007/02/26 644
2007/03/05 490
已選取 15 個資料列.
主要是巧妙使用了NEXT_DAY函式。
select to_char(min(time1),'yyyy-mm-dd')||'('||to_char(min(time1),'day')||')'||'~'||to_char(max(time1),'yyyy-mm-dd')||'('||to_char(max(time1),'day')||')',sum(num1) from test02
group by trunc(next_day(time1,2));
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9925929/viewspace-915612/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- php倒數計時出現-0的情況PHP
- 關於docker-compose up -d 出現超時情況處理Docker
- 時間相關的操作
- 爬蟲代理為什麼會出現超時的情況?爬蟲
- 【SCRIPT】Oracle統計資訊相關SQLOracleSQL
- Oracle時間模型統計SQLOracle模型SQL
- PHP 連線 MSSQL:text 欄位總是會被無故截斷有時截斷時還出現亂碼情況...PHPSQL
- 點選EditText的時候出現被鍵盤遮擋 在不使用scrollView的情況View
- 時間相關的工具類
- sql執行期間相關的等待SQL
- iOS全埋點解決方案-時間相關iOS
- php訪問目標網站時出現亂碼的情況PHP網站
- 應用長時間未呼叫後再次呼叫出現hang的情況
- C# 獲取系統相關時間C#
- undo表空間出現問題的幾種情況與處理
- Oracle按時間分組統計的sqlOracleSQL
- GreatSQL統計資訊相關知識點SQL
- 月結各模組關閉情況查詢SQLSQL
- VC知識點:出現*.pch檔案找不到的情況怎麼辦?
- 時間函式:與時間相關那些事。。。函式
- 關於變數與‘=’賦值的情況出錯變數賦值
- MySQL遠端訪問時,非常慢,甚至出現連不上的情況MySql
- if 判斷為 false 的 6 種情況False
- python 時間相關模組Python
- 變數轉化為判斷條件時的各種情況變數
- Oracle - 表空間使用情況及相關字典Oracle
- 用redis統計大量使用者的登陸情況[只判斷是否活躍]Redis
- Postgrsql 從節點當機,主節點執行DML語句出現等待情況SQL
- 程式設計師修bug時的真實情況程式設計師
- <img>標籤的src=""空字元會出現的情況字元
- iOS 下載URL不斷改變的情況下 使用 resumeData做斷點續傳iOS斷點
- Qt 彈出的子頁面在未關閉的情況下,關閉主窗體,程式不退出的情況解決QT
- oracle臨時表空間相關Oracle
- Oracle 表空間查詢相關sqlOracleSQL
- kafka不停止服務的情況下修改日誌保留時間Kafka
- 線性時間選擇(含平均情況O(n)和最壞情況O(n)演算法)演算法
- 打包時出現相互依賴的問題(即倆個包相互咬死的情況)
- java空指標出現的情況:拆箱裝箱Java指標