【问题标题】:Binning time series data and removing multiples within bin对时间序列数据进行分箱并删除 bin 内的倍数
【发布时间】:2015-07-31 14:40:53
【问题描述】:

Sql Server Mgmt studio 中的 2 列是 ID 和 DateTime。有些行重复,有些日期时间值有不同的频率......即,对于 1 个 ID,可能有 3 个重复的日期时间值,然后该 ID 的下两个可能是 2 分钟后,然后是另外 2 个 20几秒钟后。

我想为每个 ID 每 5 分钟抓取一行,或者至少确保每个 ID 的条目至少相隔 5 分钟。它大约有 4 亿行和 17 列,不幸的是现在它们都是 varchar(50)。我对数据库管理了解不多,但我知道当我试图改变本地机器数据库上的数据类型时,它很快就吞噬了我所有剩余的磁盘空间。任何建议都将受到欢迎。谢谢

【问题讨论】:

  • 你使用什么数据库?

标签: sql time greatest-n-per-group reduction binning


【解决方案1】:

这是 SQL Server 的解决方案。

要创建 5 分钟的小组,您可以使用 DATEDIFF(mi, 0, DateTime) / 12

之后,您只需要像这样在 ID 和 5 分钟间隔的每个组合中记录第一条记录:

WITH binned_data AS (
    SELECT *, ROW_NUMBER() 
    OVER (
        PARTITION BY ID, DATEDIFF(mi, 0, DateTime) / 12 
        order by DateTime
    ) AS RowNo 
    FROM my_data
)
SELECT * FROM binned_data WHERE RowNo = 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多