我有一张类似......的桌子。
[DateValueField][Hour][Value]
2014-09-01 1 200
...
2014-09-01 24 400
2014-09-02 1 220
...
2014-09-02 24 200
...
我需要为每个DateValueField提供相同的值,例如基于6-12之间的平均小时值,但是显示所有小时数,而不仅仅是6-12。例如......
[DateValueField][Hour][Value]
2014-09-01 1 300
...
2014-09-01 24 300
2014-09-02 1 190
...
2014-09-02 24 190
...
我正在尝试的查询是......
select DateValueField, Hour,
(select avg(Value) as Value from MyTable where Hour
between 6 and 12) as Value from MyTable
where DateValueField between '2014' and '2015'
group by DateValueField, Hour
order by DateValueField, Hour
但是它给了我作为所有值的平均值的价值,但是我需要在我指定的时间之间平均那个特定日期。
我很感激一些帮助/建议。谢谢!
答案 0 :(得分:1)
您可以使用派生表来获取按日期分组的小时6到12之间的平均值,然后将其连接到原始表
select t1.DateValueField, t1.Hour, t2.avg_value
from MyTable t1
join (
select DateValueField, avg(Value) avg_value
from MyTable
where hour between 6 and 12
group by DateValueField
) t2 on t2.DateValueField = t1.DateValueField
order by t1.DateValueField, t1.Hour
注意:如果您的某些日期在6到12小时之间没有值,但您仍想从MyTable中检索所有行,则可能需要使用左连接。