如何,我可以只爲一個間隔時間每次(小間隔)第一個值來計算?
詳情:
我有(許多)計數器(counterId列)。 每個計數器從時間採樣時間和樣本保存在「counter_samples」表:
counter_samples表:
id |counterId | value | Time |
1 | 1 | 100 | 2015-06-12 14:00:04 |
2 | 2 | 57 | 2015-06-12 14:00:11 |
3 | 1 | 100 | 2015-06-12 15:00:43 |
4 | 2 | 59 | 2015-06-12 15:00:24 |
5 | 1 | 104 | 2015-06-12 16:00:12 |
6 | 2 | 63 | 2015-06-12 16:00:14 |
7 | 1 | 110 | 2015-06-12 17:00:25 |
8 | 2 | 70 | 2015-06-12 17:00:28 |
9 | 1 | 120 | 2015-06-12 18:00:17 |
10 | 2 | 80 | 2015-06-12 18:00:36 |
11 | 1 | 130 | 2015-06-12 19:00:04 |
12 | 2 | 90 | 2015-06-12 19:00:13 |
13 | 1 | 170 | 2015-06-12 20:00:52 |
14 | 2 | 95 | 2015-06-12 20:00:13 |
15 | 1 | 190 | 2015-06-12 21:00:11 |
16 | 2 | 99 | 2015-06-12 21:00:04 |
正如你所看到的,隨着時間的傳遞總是更大的每一個計數器值或等於之前(等於=無在時間跨度計數)
我想是對於任何給定的時間間隔(@start_date AND @end_date)的值來查詢樣品表約持續時間(小時/天/周/月等),並獲得每持續時間在區間的總計數。
例如,如果間隔是:1/1/2014 - 1/1/2015並且持續時間是月,則結果集將是12個行,代表月份i的區間和月份值中的12個月'將是月[i + 1]。值 - 月[i]。值。
要計算計數我想從當前持續時間的第一條記錄中減去下一個持續時間的第一條記錄 - 對於上面的示例,如果持續時間是2小時,我想要的是(對於counterId = 1 ):
|CounterId | count | Time |
| 1 | 4 | 2015-06-12 14:00:00 |
| 1 | 16 | 2015-06-12 16:00:00 |
| 1 | 50 | 2015-06-12 18:00:00 |
而對於counterId = 2:
|CounterId | count | Time |
| 2 | 6 | 2015-06-12 14:00:00 |
| 2 | 17 | 2015-06-12 16:00:00 |
| 2 | 15 | 2015-06-12 18:00:00 |
(在時間20點零零分00秒以上兩個查詢通知的因爲...忽略爲22時00分00秒和沒有記錄以上)
的時候一定要改變,因爲我希望能夠GROUPBY和總和計數器相匹配的(intervalStart +持續時間* K)格式通過時間在不同的查詢,以便在上面的例子中得到:
| count | Time |
| 10 | 2015-06-12 14:00:00 |
| 33 | 2015-06-12 16:00:00 |
| 65 | 2015-06-12 18:00:00 |
我一直有在這裏尋找&一個很好的例子,針對此問題但沒有什麼,我發現解決了它: Sql to select row from each day of a month
Select first row in each GROUP BY group?
When should I use Cross Apply over Inner Join?
謝謝!