0

不知道如何处理这个..我需要获取大量的温度数据..并每隔两周对它们进行平均..我玩过数据透视图,只能返回每周平均数..

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

ETC..

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

4

2 回答 2

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 日是星期天,所以这周应该是星期日 - 星期六(这通常是合理的)。

于 2012-08-15T13:34:08.477 回答
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)
于 2017-03-23T14:59:37.510 回答