2016-09-20 62 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

相关问题