sql - 按时间跨度的行数进行 SQL 查询
问题描述
我在 SQL Server 中有一个名为的数据库表,Cars
其中包含一个time
列,该列是该行的插入时间戳:
TABLE [Cars]
(
[ID] [BIGINT] NOT NULL,
[Time] [DATETIME] NOT NULL,
...
)
我需要一个查询来获取在 1 分钟内插入超过 3 行的所有行组
我达到的唯一解决方案是
select a.ID, b.ID, c.ID, a.Time, b.Time, c.Time, c.Time-a.Time as duration
FROM Cars a
INNER JOIN Cars b on b.Time-a.Time < '1900-01-01 00:01'
INNER JOIN Cars c on c.Time-a.Time < '1900-01-01 00:01'
WHERE b.time > a.time and c.time > a.time
但是如果我在一分钟内尝试超过 3 行,它似乎太重了。
欢迎任何其他建议
解决方案
尝试以下内容
SELECT
COUNT(C.[ID]),
c.[Time]
FROM
[Cars] AS C
GROUP BY
DATEPART(YEAR, C.[Time]),
DATEPART(MONTH, C.[Time]),
DATEPART(DAY, C.[Time]),
DATEPART(HOUR, C.[Time]),
DATEPART(MINUTE, C.[Time])
HAVING
COUNT(C.[ID]) > 3
推荐阅读
- vb.net - 另一个进程正在使用文本文件
- python - 如何遍历图像绘制边界框?
- python - 列表(向量)与张量流要求的形状不匹配
- regex - 使用 RegEx 验证用户输入
- php - PHP 致命错误:未捕获的错误:找不到类“Google\Ads\GoogleAds\Examples\Utils\ArgumentParser”
- java - 具有序列奇数的 Java GeneratedValue (allocationSize = 1)
- go - PostgreSQL - golang 程序导致奇怪的锁
- android - 如何设置 Flutter build android aar 版本?
- c - 比较字符串的第一个和第三个字符
- parallel-processing - OpenMP 线程的 OpenBlas 并行化