日期:2014-05-17  浏览次数:20533 次

SQL查询每小时,每天,每月的平均值
SQL查询每小时,每天,每月的平均值:
有这么一个Table表:
timeid                v001   v002  v003  v004
2008-01-01 01:05:00     1     2     3      4
2008-01-01 01:25:00     1     2     3      4
2008-01-01 01:55:00     1     2     3      4
2008-01-01 02:05:00     1     2     3      4
2008-01-01 02:25:00     1     2     3      4
2008-01-01 02:55:00     1     2     3      4
..
..
..
2008-01-01 23:55:00     1     2     3      4
2008-01-02 01:05:00     1     2     3      4
..
..
2008-01-02 23:55:00     1     2     3      4
...
...
...
2008-01-31 23:55:00     1     2     3      4
每小时平均值查询指的是:如2008-01-01 01:05:00-----2008-01-01 01:55:00之间的值的平均
每天平均值查询指的是:如2008-01-01 01:05:00-----2008-01-01 23:55:00之间的值的平均
每月平均值查询指的是:如2008-01-01 01:05:00-----2008-01-31 23:55:00之间的值的平均
timeid 是samlltimedate

------解决方案--------------------
--#1.每小时平均值
select year(timeid), MONTH(timeid), DAY(timeid), DATEPART(hour, timeid), AVG(v001), AVG(v002), AVG(v003), AVG(v004)
from tb
group by year(timeid), MONTH(timeid), DAY(timeid), DATEPART(hour, timeid)
--#2.每天平均值
select year(timeid), MONTH(timeid), DAY(timeid), AVG(v001), AVG(v002), AVG(v003), AVG(v004)
from tb
group by year(timeid), MONTH(timeid), DAY(timeid)
--#3.每月平均值
select year(timeid), MONTH(timeid), AVG(v001), AVG(v002), AVG(v003), AVG(v004)
from tb
group by year(timeid), MONTH(timeid)

------解决方案--------------------
引用:
这是显示一条内容。
那显示24个小时的怎么写呢
那显示28天,29天,30天,或31天的内容怎么写
显示12个月的、求指教!

如果你查询的数据都存在,好办.如果缺少,则需要构造临时表,然后使用左连接来做.看懂下面的例,其他的就明白了.

获取两个时间之内的所有日期

--sql 2000
declare @sdate datetime
declare @edate datetime
set @sdate = '2008-10-15 00:00:000'
set @edate = '2009-02-10 00:00:000'


select 
    dateadd(dd,num,@sdate) dt
from 
    (select isnull((select count(1) from sysobjects where id<t.id),0) as num from sysobjects t) a
where