小問題-用分析函式求平均時間段的統計數.txt
在qq群裡看到一個問題,覺得很好解決。但坐下來認真分析,卻發現自己不會。
問題:
有如下的一個表
SQL> select * from test order by time;
TIME COUNT
-------- ----------
00:00:02 6
00:00:04 9
00:00:07 7
00:00:09 2
00:00:09 3
00:00:10 5
00:00:12 1
00:00:15 8
00:00:18 4
需要統計每五秒count的平均值。(半開半閉區間,即0秒包括[0,5)秒)
結果應該為:
TIME avg(COUNT)
-------- ----------
00:00:00 7.5
00:00:05 3.3
00:00:10 3
00:00:15 6
想了一晚上,現在只知道得出平均值的一個笨方法:
floor((to_date(time,'hh24:mi:ss')-trunc(to_date(time,'hh24:mi:ss')))*86400/5)
得到結果:
SQL> select floor((to_date(time,'hh24:mi:ss')-trunc(to_date(time,'hh24:mi:ss')))*86400/5),time from test order by
time;
FLOOR((TO_DATE(TIME,'HH24:MI:S TIME
------------------------------ --------
0 00:00:02
0 00:00:04
1 00:00:07
1 00:00:09
1 00:00:09
2 00:00:10
2 00:00:12
3 00:00:15
3 00:00:18
9 rows selected
異常艱難地得到了各個時間所在的分組:
SQL> select floor((to_date(time,'hh24:mi:ss')-trunc(to_date(time,'hh24:mi:ss')))*86400/5)/86400*5+trunc(to_date
(time,'hh24:mi:ss')),time,count from test order by time;
FLOOR((TO_DATE(TIME,'HH24:MI:S TIME COUNT
------------------------------ -------- ----------
2012-12-1 00:00:02 6
2012-12-1 00:00:04 9
2012-12-1 0:00:05 00:00:07 7
2012-12-1 0:00:05 00:00:09 2
2012-12-1 0:00:05 00:00:09 3
2012-12-1 0:00:10 00:00:10 5
2012-12-1 0:00:10 00:00:12 1
2012-12-1 0:00:15 00:00:15 8
2012-12-1 0:00:15 00:00:18 4
根據以前學過的分析函式,over子句,用floor這個表示式作為分割槽條件應該是合適的,於是嘗試:
SQL> select distinct floor((to_date(time,'hh24:mi:ss')-trunc(to_date(time,'hh24:mi:ss')))*86400/5)/86400*5+trunc
(to_date(time,'hh24:mi:ss')),
avg(count) over (partition by floor((to_date(time,'hh24:mi:ss')-trunc(to_date(time,'hh24:mi:ss')))
*86400/5)/86400*5+trunc(to_date(time,'hh24:mi:ss')))
from test;
FLOOR((TO_DATE(TIME,'HH24:MI:S AVG(COUNT)OVER(PARTITIONBYFLOO
------------------------------ ------------------------------
2012-12-1 0:00:05 4
2012-12-1 0:00:10 3
2012-12-1 0:00:15 6
2012-12-1 7.5
看著都覺得噁心,不過總算有個結果了。以後有時間再研究。
當前存在的不足主要是時間太不靈活了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26451536/viewspace-753261/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180509]函式索引問題.txt函式索引
- excel統計大於15小於20的數並求和 統計區間個數的函式Excel函式
- [20240202]windows時間同步問題.txtWindows
- [20190918]關於函式索引問題.txt函式索引
- ORACLE計算2個時間段相差時間小時、分、秒Oracle
- c++ CopyFile函式響應時間過長問題。C++函式
- 倒數計時快取時間問題總結快取
- 時間序列分析(一)--移動平均
- linux系統時間程式設計(9) 計算程式片段執行時間clock函式Linux程式設計函式
- Oracle計算時間函式(對時間的加減numtodsinterval、numtoyminterval)Oracle函式
- 分散式系統的硬核:時間時鐘問題和演算法分散式演算法
- 使用ASM框架實現統計函式執行時間ASM框架函式
- 探索MySQL高階語句(數學函式、聚合函式、字串函式、日期時間函式)MySql函式字串
- 函式呼叫引數變數傳值的問題函式變數
- linux系統時間程式設計(6) 日曆時間tm轉字串strftime函式Linux程式設計字串函式
- 大神是怎樣用函式式JavaScript計算陣列平均值的函式JavaScript陣列
- 統計原理 平均數
- PHP 時間函式PHP函式
- SPL 的日期時間函式函式
- MySQL 日期函式、時間函式在實際場景中的應用MySql函式
- 使用微分中值定理分析開區間時導數和函式的有界關係函式
- 【解惑】時間規劃,Linq的Aggregate函式在計算會議重疊時間中的應用函式
- Golang時間函式及測試函式執行時間案例Golang函式
- [20190728]分析函式LAST_VALUE.txt函式AST
- [20210624]find -mtime +N N -N的時間範圍問題.txt
- 開發函式計算的正確姿勢 —— 排查超時問題函式
- SqlServer 查詢的幾種方式以及數字函式、時間函式的應用總結(迴歸基礎)SQLServer函式
- T-SQL——函式——時間操作函式SQL函式
- 時區問題導致時間相差8個小時
- python效能優化之函式執行時間分析Python優化函式
- 留存統計 引數聚合函式函式
- MySQL 的日期和時間函式MySql函式
- python專案例項:抓取網頁時間段內的請求次數、頻寬Python網頁
- Clickhouse 時間日期函式函式
- 關於在request請求時,處理請求引數的問題
- 計算時間差,頁面倒數計時,安卓與ios相容問題安卓iOS
- [20210708]find -mtime +0 0 -0時間問題補充.txt
- [20210625]find -mtime +N N -N時間問題補充.txt
- [20210626]find -mtime +N N -N時間問題補充.txt