如何解决SQL:将每小时样本分成 7 天平均值
给定:
- 工具:sql Server、SSMS 2016、R
- 数据:从 2017-12-31 23:00:00 到 2021-02-05 08:00:00 开始的每小时样本
想要:将数据分成 7 天的块,最好与一年中的一周重合,并获取每个 7 天周期的平均值。愿意牺牲一些数据前端和/或后端。希望将数据频率从每年 12x365 点减少到大约 52 点。用于 R 中的最终用途。
问题(S): A) sql datepart(week,...) 方法不会将 2018 年的第 1 个 7 天视为第 1 周。认为该周从一周中的某一天开始,不一定是在 1 月 1 日。
B) 我怀疑 sql datepart(week,...) 会在几年的数据中分配重复的周值。因此,如果我按 datepart(week...) 分组,它不会合并 2018、2019、2020、2021 的第 1 周吗?
这是我的起始查询(AvgDate 用于调试目的):
SELECT datepart(week,Date) Week,FORMAT(AVG(HeadElev),'###.###') as AvgHeadEl,COUNT(HeadElev) as Count,FORMAT(AVG(datepart(Day,Date)),'##.###') as AvgDate
FROM [dbo].[Chickamauga] as CWL
WHERE '20171231' < Date AND Date <= '20181231'
GROUP BY datepart(week,Date)
ORDER BY Week
GO
这是我的表格的样子(我从原始数据中拆分了日期和时间):
CREATE TABLE [dbo].[SomeLake](
[Date] [date] NULL,[HourCT] [time](0) NULL,[HeadElev] [float] NULL,[TailElev] [float] NULL,[Flow] [float] NULL
) ON [PRIMARY]
再次尝试创建简单的 7 天样本块并获取平均值。 (不是移动平均线,我只想要每 7 天块有 1 个数据点。)我试图将数据频率从(每小时数据减少到每周数据)。
最终目标是导入 R 并使用不能接受像 365 这样的高每年频率的时间序列函数。试图将频率降低到 52,即。每周数据。)
感谢您的帮助!
解决方法
创建简单的 7 天样本块并获取平均值。
按以下内容分组:
1+datepart(dy,some_date)/7 week
取一年中的某一天并执行整数除法,将它们分成 7 天的桶,从 0 开始。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。