2016-09-20 48 views
-3

試圖根據1小時的時間間隔對數據進行分組,並獲取數據表中另一列的平均值。數據表可能包含2個或多個值爲1的日期時間庫。 例如: time result1 result2 1/1/2013 1:38:03 AM 2.3 3.2 1/1/2013 1:52:23 AM 2.5 4.2 1/1/2013 1:54:43 AM 4.1 1.9 1/1/2013 1:57:00 AM 3.3 5.1 1/1/2013 2:11:28 AM 3.2 0 1/1/2013 2:43:58 AM 3.3 8.4 1/1/2013 2:46:20 AM 4.3 3.3 1/1/2013 4:50:47 AM 3.9 2.3 1/1/2013 6:48:57 AM 3.3 4.3根據一列中的時間對數據表進行分組,並獲得其他列的平均值

預期:每小時分組(日期將是相同的)和結果

time    result1     result2 
1/1/2013 1:38:03 AM (2.3+2.5+4.1+3.3)/4  (3.2+4.2+1.9+5.1)/4 
1/1/2013 2:11:28 AM (3.2+3.3+4.3)/3   (0+8.4+3.3)/3 
1/1/2013 4:50:47 AM 3.9/1     2.3/1 
1/1/2013 6:48:57 AM 3.3/1     4.3/1 

的平均,我們可以使用數據表中的LINQ查詢得到這個結果呢?嘗試一些從谷歌樣本沒有爲我工作..

回答

0

首先,考慮如果你做了它,如果你在一個常規的SQL查詢。您希望按日期和小時分組並彙總相應的字段。

select min([time]) as [time], avg([result1]) as [result1], avg([result2]) as [result2] 
from some_table 
group by convert(date, [time]), datepart(hour, [time]) 
order by [time] 

然後做使用LINQ相同:

from t in db.SomeTable 
orderby t.Time 
group t by new { t.Time.Date, t.Time.Hour } into g 
select new 
{ 
    Time = g.Min(t => t.Time), 
    Result1 = g.Average(t => t.Result1), 
    Result2 = g.Average(t => t.Result2), 
} 
+0

按預期工作的感謝 – user3625533

相關問題