我正在使用Microsoft SQL Server 2008,並且擁有一個數據集,每隔幾分鐘就有一個條目需要很長時間。我正在使用一個程序來繪製數據圖,所以我需要每小時返回大約20個值。有些日子,數據是每分鐘,有時每五分鐘,有時每8或9分鐘,因此選擇每隔n個行將不會產生隨時間變化的均勻分佈SQL每n分鐘選擇一行
例如,對於2012年的樣本,看起來像這樣:
DateTime
2012-01-01 08:00:10.000
2012-01-01 08:08:35.000
2012-01-01 08:17:01.000
2012-01-01 08:25:26.000
和樣品,明年它看起來像這樣:
DateTime
2013-07-20 08:00:00.000
2013-07-20 08:01:00.000
2013-07-20 08:02:00.000
2013-07-20 08:03:00.000
2013-07-20 08:04:00.000
目前我使用這樣的語句:
SELECT * FROM [Master]
WHERE (((CAST(DATEPART(hour, DateTime)as varchar(2)))*60)
+CAST(DATEPART(minute, DateTime)as varchar(2))) % '5' = '0'
ORDER BY DateTime
這對於7月2013工作正常,但我在2012年最懷念的點,它返回
DateTime
2012-01-01 08:00:10.000
2012-01-01 08:25:26.000
2012-01-01 08:50:43.000
2012-01-01 09:15:59.000
2012-01-01 10:40:14.000
2012-01-01 11:05:30.000
有什麼更好的辦法是這樣做呢?
編輯:表有一個DateTime列和一個壓力列,我需要輸出兩個圖形壓力日期和時間。按小時
Declare @NumberPerHour Int = 20
;With Cte As
(
Select DateTime, Row_Number() Over (Partition By DateDiff(Hour, 0, DateTime) Order By NewId()) RN
From Master
)
Select DateTime
From Cte
Where RN <= @NumberPerHour
Order By DateTime Asc
這將組行,並指定一個隨機Row_Number
ID給他們,只拉那些:
你只是想要生成時間?或者您希望從樣本數據中得到什麼樣的輸出結果? – Siyual
你究竟想要擺脫這些數據? – bowlturner
我在一個名爲「壓力」的欄中輸出數值,並繪製壓力與時間的關係。對不起,不清楚! – Clara