微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQL:将每小时样本分成 7 天平均值

如何解决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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?