查询日期并返回双周温度平均值

时间:2012-08-15 12:36:25

标签: sql average

不确定如何接近这个...我需要获取大量的温度数据..并且每两周平均一次。我使用了数据透视图并且只能返回每周平均值..

Table:TempData

SITE  Date  Temperature_C
JON   6/4/2001 28
JON   6/4/2001 29
JON   6/4/2001 26
JON   6/5/2001 24
JON   6/5/2001 27

等..

我可以创建一个查询,将所有日期分成特定的ID ..比如1-100,每个值代表从6/4/2001开始的2周平均值 - 无论200周后是什么。然后以这种方式使用数据透视图..当然,我必须AVG大量的日期(许多具有不同的记录值...有些日子有4个记录..有些有40个)。我可以使用任何代码根据日期搜索连续系列.. Datesub()?我不知所措。

2 个答案:

答案 0 :(得分:0)

我们的想法是从一些开始日期开始,然后除以14.以下是使用SQL Server语法的示例:

select datediff(day, cast('2012-01-01' as date), [date])/14 as weeknumber,
       min([date]) as weekstart,
       max([date]) as weekend,
       avg(Temperature_C*1.0) as avg_temp
from TempData
group by datediff(day, cast('2012-01-01' as date), [date])/14 
order by 1

在其他数据库中,逻辑类似,但具体功能会有所不同。

顺便说一句,2012年1月1日是一个星期天,所以这周将是星期日 - 星期六(这通常是合理的)。

答案 1 :(得分:0)

你需要这样的东西:

SELECT anyColumn, …, dateadd(week, datediff(week, 0, dateColumn) / 2 * 2 , 0) as biweekly, avg(temperature)
FROM table
WHERE condition
GROUP BY anyColumn, …, dateadd(week, datediff(week, 0, dateColumn) / 2 * 2 , 0)