考慮這個數據集:如何計算運行總計是值的總和鮮明
id site_id type_id value date
------- ------- ------- ------- -------------------
1 1 1 50 2017-08-09 06:49:47
2 1 2 48 2017-08-10 08:19:49
3 1 1 52 2017-08-11 06:15:00
4 1 1 45 2017-08-12 10:39:47
5 1 2 40 2017-08-14 10:33:00
6 2 1 30 2017-08-09 07:25:32
7 2 2 32 2017-08-12 04:11:05
8 3 1 80 2017-08-09 19:55:12
9 3 2 75 2017-08-13 02:54:47
10 2 1 25 2017-08-15 10:00:05
我想構建一個返回由類型每個日期的運行總計查詢。我可以關閉一個窗口函數,但我只希望爲每個站點計算總運行總數的最新值(一個簡單的窗口函數將不起作用,因爲它總計所有值直到一個日期 - 而不僅僅是每個站點的最後值)。所以我想它可以更好地描述爲一個獨特的總數?
我要找的會是這樣的結果:
type_id date sum
------- ------------------- -------
1 2017-08-09 06:49:47 50
1 2017-08-09 07:25:32 80
1 2017-08-09 19:55:12 160
1 2017-08-11 06:15:00 162
1 2017-08-12 10:39:47 155
1 2017-08-15 10:00:05 150
2 2017-08-10 08:19:49 48
2 2017-08-12 04:11:05 80
2 2017-08-13 02:54:47 155
2 2017-08-14 10:33:00 147
這裏的關鍵是,和不運行總和。它應該只是每個網站的最新值的總和,按類型,在每個日期。我想我可以通過瀏覽上面提供的結果集來解釋它。對於我的解釋,我會按照時間順序瀏覽原始數據,並嘗試解釋預期結果。
結果的第一行開始我們在2017-08-09 06:49:47,按時間順序,只有一個類型1的記錄,它是50,所以這是我們的總和爲2017年 - 08-09 06:49:47。
結果的第二行是在2017年8月9日7時25分32秒,在這個時間點上,我們有2個與TYPE_ID值唯一站點= 1。他們有50和30個值,所以總和爲80.
結果的第三行發生在2017-08-09 19:55:12,現在我們有3個網站的值爲type_id = 1。50 + 30 + 80 = 160.
第四行是它變得有趣的地方。在2017-08-11 06:15:00有4條記錄type_id = 1,但其中2個是針對同一個網站的。我只是在最近的值感興趣的每個網站,所以我想總結的值是:30 + 80 + 52 導致在。
第5行與第4行相似,因爲site_id:1,type_id:1的值再次發生了變化,現在爲45.這會導致type_id的最新值:1在2017-08-12 10:39 :47現在:30 + 80 + 45 = 155.
當我們考慮在2017-08-15 10:00:05,站點2對type_id 1有一個新值時,審查第6行也很有趣,這使我們:80 + 45 + 25 = 爲 2017年8月15日十時00分05秒。
你需要TYPE_ID分區相信 –
是這樣的:選擇TYPE_ID ,日期 ,SUM(值)超過(通過日期TYPE_ID順序分區) 從表 爲了通過TYPE_ID,日期 –
我可以理解你的前三個總和值(50,80,160)的值來自哪裏,但不知道第四排爲什麼/如何是162? – SEarle1986