sql-server-2005 – 如何在SQL Server 2005中对一天中的数据进行平均/求和

前端之家收集整理的这篇文章主要介绍了sql-server-2005 – 如何在SQL Server 2005中对一天中的数据进行平均/求和前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在一天内平均sql Server 2005中的数据.如果我使用简单查询,这是我的数据库看起来像这样
  1. SELECT timestamp,Feed
  2. FROM ROASTER_Feed
  3. ORDER timestamp

数据:

  1. timestamp Feed
  2. 02/07/2011 12:00:01 1246
  3. 02/07/2011 12:00:01 1234
  4. 02/07/2011 12:00:01 1387
  5. 02/07/2011 12:00:02 1425
  6. 02/07/2011 12:00:03 1263
  7. ...
  8. 02/07/2011 11:00:01 1153
  9. 02/07/2011 11:00:01 1348
  10. 02/07/2011 11:00:01 1387
  11. 02/07/2011 11:00:02 1425
  12. 02/07/2011 11:00:03 1223
  13. ....
  14. 03/07/2011 12:00:01 1226
  15. 03/07/2011 12:00:01 1245
  16. 03/07/2011 12:00:01 1384
  17. 03/07/2011 12:00:02 1225
  18. 03/07/2011 12:00:03 1363

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

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

  1. 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后的分钟数

所以,你可以使用:

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

而对于夜班:

  1. SELECT
  2. AVG(Temperature) As Nigthshift
  3. FROM Drye_data
  4. WHERE (
  5. (DATEPART(hh,TimeStamp) BETWEEN 0 AND 460)
  6. AND @SelectedDate = DATEADD(dd,1,CAST(FLOOR(CAST(TimeStamp AS FLOAT)) AS DATETIME))
  7. )
  8. OR
  9. (
  10. (DATEPART(hh,TimeStamp) BETWEEN 1180 AND 1440) AND @SelectedDate = CAST(FLOOR(CAST(TimeStamp AS FLOAT)) AS DATETIME)
  11. )

猜你在找的MsSQL相关文章