【发布时间】:2021-11-17 10:00:22
【问题描述】:
我遇到的问题是我有一个数据表,其中每秒添加一个新行(想象一下结构 {id, timestamp(datetime), value})。我想对 MSSQL 进行一次查询以遍历表并仅输出每分钟具有前 2 个值 asc 的对象的数量(也输出)。
有什么想法吗?
样本数据:
1 2015-01-01 00:00:00 128
2 2015-01-01 00:00:01 128
3 2015-01-01 00:00:04 129
4 2015-01-01 00:00:05 123
...
67 2015-01-01 00:00:59 128
Output :
starttime endtime number
2015-01-01 00:00:00 2015-01-01 00:00:59 4
【问题讨论】:
-
SELECT MAX(value), datetime FROM table GROUP BY DATEPART 这样的事情?但是我不知道日期部分是否可能是分钟。但我敢肯定,如果您搜索“按分钟分组”,您会找到一些东西。请记住,尽管这只会为您提供每分钟的最高价值。
-
“最好”是什么意思?以及输出如何变成
4?2015-01-01 00:01:00分钟发生了什么? -
@Charlieface 抱歉,必须编辑我的帖子以澄清这个想法:最好参考最高值 asc,4 是与最高值相关的对象数,在本例中为 129 和 128。
-
使用
row_number和value进行排序,DateDiff进行分区。选择 row_number
标签: sql sql-server datetime