首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sql / linq to entities:按小时组分组

sql / linq to entities:按小时组分组
EN

Stack Overflow用户
提问于 2009-11-04 21:27:32
回答 2查看 347关注 0票数 0

我有一个包含降雪数据的表,我每小时都会收到这些数据。例如,在凌晨0点到凌晨1点之间会有1厘米的降雪,在凌晨1点到凌晨2点之间会有3厘米的降雪,在凌晨2点到凌晨3点之间会有0厘米的降雪,在凌晨3点到凌晨4点之间会有2厘米的降雪等等。所以表中有一个Snowdate列(datetime),一个Snowdate hour列(int)和一个snow data列(int)。现在我想给出按6小时分组的数据(0-5,6-11,12-17和18-23),所以当在0am和6am之间时,我有6个记录(1 cm,3c,0 cm,2 cm )。0 0cm),我想显示一行数字8,然后在今天剩下的时间里依此类推。对于一天中的每一个小时,在数据库中都会有一条记录,所以一天总是有24条记录

纯sql解决方案也可以(视图之类的),或者linq to entities也可以。

米歇尔

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-04 21:45:41

如果我没理解错的话,试着这样做

代码语言:javascript
复制
DECLARE @Table TABLE(
        SnowDate DATETIME,
        SnowHour INT,
        SnowFall INT
)

INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 0, 1
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 1, 3
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 2, 0
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 3, 2
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 4, 2
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 5, 0
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 6, 10
INSERT INTO @Table (SnowDate,SnowHour,SnowFall) SELECT '10 Sep 2009', 7, 10


SELECT  SnowDate,
        CAST(FLOOR((SnowHour) / 6.) * 6 AS VARCHAR(4)) + ' TO ' + CAST((FLOOR((SnowHour) / 6.) + 1) * 6 - 1 AS VARCHAR(4)),
        SUM(SnowFall) AS Total
FROM    @Table
GROUP BY    SnowDate,
            FLOOR((SnowHour) / 6.)
票数 1
EN

Stack Overflow用户

发布于 2009-11-04 21:44:50

按小时/6分组(使用整数算法),并选择对金额列进行分组。选择一个新对象,键*6和Sum()为该“小时”的合计结果分组。“小时”将是每个范围内的第一个小时。

代码语言:javascript
复制
var query = db.SnowRecords.GroupBy( s => s.SnowHour / 6, a => a.SnowFall )
                          .Select( g => new {
                            Hour = g.Key * 6,
                            Amount = g.Sum()
                           });

您没有说是否还需要按日期分组,但如果您这样做了,那么这将成为对按日期分组的记录的内部查询。

代码语言:javascript
复制
var query = db.SnowRecords.GroupBy( s => s.SnowDate.Date )
                          .Select( g => new {
                                Date = g.Key,
                                HourlySnowFall = g.GroupBy( s => s.SnowHour / 6, a => a.SnowFall )
                                                  .Select( sg => new {
                                                      Hour = sg.Key * 6,
                                                      Amount = sg.Sum()
                                                   })
                           });
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1673737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档