加入收藏 | 设为首页 | 会员中心 | 我要投稿 孝感站长网 (https://www.0712zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server-2005 – 如何在SQL Server 2005中对一天中的数据进行

发布时间:2021-02-04 11:19:36 所属栏目:MsSql教程 来源:网络整理
导读:我试图在一天内平均SQL Server 2005中的数据.如果我使用简单查询,这是我的数据库看起来像这样 SELECT timestamp,FEEDFROM ROASTER_FEEDORDER timestamp 数据: timestamp Feed 02/07/2011 12:00:01 1246 02/07/2011 12:00:01 1234 02/07/2011 12:00:01 1387 0

我试图在一天内平均SQL Server 2005中的数据.如果我使用简单查询,这是我的数据库看起来像这样

SELECT timestamp,FEED
FROM ROASTER_FEED
ORDER timestamp

数据:

timestamp               Feed    
02/07/2011 12:00:01     1246   
02/07/2011 12:00:01     1234    
02/07/2011 12:00:01     1387    
02/07/2011 12:00:02     1425   
02/07/2011 12:00:03     1263   
...    
02/07/2011 11:00:01     1153    
02/07/2011 11:00:01     1348    
02/07/2011 11:00:01     1387    
02/07/2011 11:00:02     1425    
02/07/2011 11:00:03     1223    
....   
03/07/2011 12:00:01     1226    
03/07/2011 12:00:01     1245    
03/07/2011 12:00:01     1384    
03/07/2011 12:00:02     1225    
03/07/2011 12:00:03     1363

当有人选择一个月的日期时,我不知道如何平均饲料,它只显示当天的平均值/总和.

例如,在结果中,如果我选择日为02/07/2011.它会给我这样的东西:

02/07/2011 1234 (average value/or sum)

解决方法

早上7:40是00:00后的460分钟

晚上7:40是00:00后的1180分钟

midnigth是00:00后的1440分钟

和DATEPART(hh,SomeDate)* 60 DATEPART(mi,SomeDate)为您提供给定SomeDate 00:00后的分钟数

所以,你可以使用:

SELECT
    AVG(Temperature) As Dayshift
FROM Drye_data
WHERE DATEPART(hh,TimeStamp)*60 + DATEPART(mi,TimeStamp) BETWEEN 460 AND 1180
      AND @SelectedDate = CAST(FLOOR(CAST(TimeStamp AS FLOAT)) AS DATETIME)

而对于夜班:

SELECT
    AVG(Temperature) As Nigthshift
FROM Drye_data
WHERE (
        (DATEPART(hh,TimeStamp) BETWEEN 0 AND 460)
        AND @SelectedDate = DATEADD(dd,1,CAST(FLOOR(CAST(TimeStamp AS FLOAT)) AS DATETIME))
      )
      OR 
      (
         (DATEPART(hh,TimeStamp) BETWEEN 1180 AND 1440) AND @SelectedDate = CAST(FLOOR(CAST(TimeStamp AS FLOAT)) AS DATETIME)
      )

(编辑:孝感站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读