不确定如何接近这个...我需要获取大量的温度数据..并且每两周平均一次。我使用了数据透视图并且只能返回每周平均值..
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()?我不知所措。
答案 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)