日期:2014-05-19  浏览次数:20691 次

【求助】【周一】请问如何按时间求平均值,比如按小时、天、月
表如下:
(有两列,数据列是float,记录时间是smalldatetime)

    数据                   记录时间
0.123456         2007-3-19   08:55:00
0.654321         2007-3-19   08:56:00
.......           ...................

求sql语句,可以求出每小时数据均值,每天数据均值,每月均值。

新手求助,希望大家不吝赐教。

------解决方案--------------------
select avg(数据) as 小时均值
from t
group by convert(varchar(13),记录时间,120)

select avg(数据) as 每天均值
from t
group by convert(varchar(10),记录时间,120)

select avg(数据)as 每月均值
from t
group by convert(varchar(6),记录时间,120)



------解决方案--------------------
--每小时数据均值
Select
Convert(Varchar(13), 记录时间, 120) As 记录时间,
AVG(数据) As 每小时数据均值
From
TableName
Group By Convert(Varchar(13), 记录时间, 120)

--每天数据均值
Select
Convert(Varchar(10), 记录时间, 120) As 记录时间,
AVG(数据) As 每天数据均值
From
TableName
Group By Convert(Varchar(10), 记录时间, 120)

--每月均值
Select
Convert(Varchar(7), 记录时间, 120) As 记录时间,
AVG(数据) As 每月均值
From
TableName
Group By Convert(Varchar(7), 记录时间, 120)



------解决方案--------------------
select avg(数据) from table group by DATEPART(hh,记录时间)
select avg(数据) from table group by DATEPART(day,记录时间)
select avg(数据) from table group by DATEPART(month,记录时间)
------解决方案--------------------
数据 记录时间
0.123456 2007-3-19 08:55:00
0.654321 2007-3-19 08:56:00
....... ...................

求sql语句,可以求出每小时数据均值,每天数据均值,每月均值。

每小时平均值
select substring(convert(varchar(19),记录时间,120),12,2) as 小时,avg(数据) from tb group by substring(convert(varchar(19),记录时间,120),12,2)

每天平均值
select substring(convert(varchar(19),记录时间,120),1,10) as 小时,avg(数据) from tb group by substring(convert(varchar(19),记录时间,120),1,10)

每月平均值
select substring(convert(varchar(19),记录时间,120),1,7) as 小时,avg(数据) from tb group by substring(convert(varchar(19),记录时间,120),1,7)