MS SQL:每 15 分钟将数据流过滤到第一个值
Posted
技术标签:
【中文标题】MS SQL:每 15 分钟将数据流过滤到第一个值【英文标题】:MS SQL: Filter datastream to first value every 15 minutes 【发布时间】:2016-06-29 15:49:53 【问题描述】:我想应用过滤器将数据过滤到 15 分钟,每 15 分钟只返回 1 行。
我有 2 个表数据,每个表包含 2 列:“Tijd”作为时间戳,“Kanaal 1”作为浮点数。根据程序的频率(表 1)或外部触发器(表 2)向两个表中添加新行。
我当前的代码适用于第一张桌子
select [Tijd], [Kanaal 1]
FROM Table_Metingen
WHERE datepart(mi,tijd) % 15 = 0
表一:(定期更新)
Tijd | Kanaal 1
2016-06-27 00:00:00 | 53
2016-06-27 00:01:00 | 53
2016-06-27 00:02:00 | 53
2016-06-27 00:03:00 | 53
2016-06-27 00:04:00 | 53
2016-06-27 00:05:00 | 53
2016-06-27 00:06:00 | 53
2016-06-27 00:07:00 | 53
表 2:(由外部触发器更新)
Tijd | Kanaal 1
2016-06-27 00:00:01 | 53
2016-06-27 00:01:02 | 53
2016-06-27 00:01:04 | 53
2016-06-27 00:01:10 | 53
2016-06-27 00:02:04 | 53
2016-06-27 00:05:03 | 53
2016-06-27 00:06:02 | 53
2016-06-27 00:10:01 | 53
当前代码的输出如下: 表一:(定期更新)
Tijd | Kanaal 1
2016-06-27 00:00:00 | 53
2016-06-27 00:15:00 | 53
2016-06-27 00:30:00 | 53
2016-06-27 00:45:00 | 53
2016-06-27 01:00:00 | 53
2016-06-27 01:15:00 | 53
2016-06-27 01:30:00 | 53
2016-06-27 01:45:00 | 53
表 2:(由外部触发器更新)
Tijd | Kanaal 1
2016-06-27 00:00:01 | 53
2016-06-27 00:15:02 | 53
2016-06-27 00:30:04 | 53
2016-06-27 00:45:00 | 53
2016-06-27 00:45:2 | 53 < Extra row, not needed
2016-06-27 01:00:01 | 53
2016-06-27 01:15:03 | 53
2016-06-27 01:30:01 | 53
2016-06-27 01:30:05 | 53 < Extra row, not needed
2016-06-27 01:45:02 | 53
【问题讨论】:
您是否考虑过使用time table?如果您有一列包含最近的一刻钟,您可以按此分组。 【参考方案1】:额外的行是由于您的 Tijd 列中的秒数。 01:30:01 和 01:30:05 都填写了检查分钟%15 = 0。所以要么你去掉查询中的秒数,要么使用带有 row_number() 的 cte 并且只选择所有带有“rownum”的行= 1"(例如)。
【讨论】:
以上是关于MS SQL:每 15 分钟将数据流过滤到第一个值的主要内容,如果未能解决你的问题,请参考以下文章