查找记录最多的时间范围

阿维·科恩(Avi Cohen)

我怎么知道哪个时间段记录最多?它可以是每4分钟,每31分钟甚至每9秒一次。

表示例:

Id  Time    Name
1   10:35   Dan
2   11:47   Eli
3   10:00   Mike
4   12:02   George
5   10:02   Jack
6   09:58   Stephan
7   11:25   Tony
8   11:34   Daniel
9   11:11   Joe
10  10:59   Tanya

它可以是每60分钟(结果是10:59),但可以是每5分钟(结果是:09:58)。

该函数调用查询获取1个参数-跨度时间(以秒为单位),例如300(5分钟)。

在这种情况下,查询返回:{3,09:58}(5分钟内(09:58、10:00、10:02)从09:58开始的3条记录。我根本不知道该怎么做。

我知道如何在一小时内找到最多的记录:

SELECT TOP 1 HOUR(TIME) AS TIME,
    COUNT(*) AS count
FROM Records
GROUP BY Hour(TIME)
ORDER BY count DESC

任何已知的模式该怎么做?

拉杜·格奥尔基(Radu Gheorghiu)

假设您使用的是SQL Server或使用T-SQL的某种产品,则以下查询应为您工作:

DECLARE @interval INT
SET @interval = 300

SELECT t.TIME,
    (
        SELECT count(*) AS cnt
        FROM timetable
        WHERE TIME >= t.TIME
                AND TIME <= DATEADD(second, @interval, t.TIME)
        ) cnt
FROM timetable t
ORDER BY cnt DESC

如果只需要第一条记录(该时间间隔中具有大多数记录的时间戳),则可以使用它TOP 1来过滤查询,如下所示:

DECLARE @interval INT
SET @interval = 300

SELECT TOP 1 t.TIME,
    (
        SELECT count(*) AS cnt
        FROM timetable
        WHERE TIME >= t.TIME
                AND TIME <= DATEADD(second, @interval, t.TIME)
        ) cnt
FROM timetable t
ORDER BY cnt DESC

这是一个SQLFiddle,其中包含查询的工作方式。

如果您没有使用使用T-SQL的RDBMS,则原理是相同的,您很可能只需DATEADD()要用与您所使用的RDBMS相适应的对应函数替换该函数即可。

另外,请注意,仅当您提供以秒为单位的时间间隔而不是其他时间间隔(分钟,小时等)时,此查询才有效

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在时间范围内弹性查找记录组中的文本

来自分类Dev

查找日期范围之间的记录

来自分类Dev

查找日期范围之间的记录

来自分类Dev

根据日期范围查找记录

来自分类Dev

查找记录最多的十年,SQL Server

来自分类Dev

SQL查找事件发生最多的时间段

来自分类Dev

查找范围之间的记录-SAILS.JS

来自分类Dev

查找日期范围之间的丢失记录

来自分类Dev

查找跨越记录的日期范围之间的差距

来自分类Dev

在SQL中查找日期范围重叠的记录

来自分类Dev

使用case语句查找时间范围

来自分类Dev

查找时间范围内的月份

来自分类Dev

在时间序列中查找不同的范围

来自分类Dev

如何根据时间戳查找记录

来自分类Dev

查找记录+/- 5秒的日期时间

来自分类Dev

Mongodb花费太多时间查找记录

来自分类Dev

ActiveRecord按日期时间按时间查找记录

来自分类Dev

耗时最多的Oracle SQL查找项目记录了多个小时的条目

来自分类Dev

MySQL:在日期时间范围内每小时获取最多计数的同值条目(统计模式)

来自分类Dev

记录最少日期的记录并计算特定时间范围内的后续记录

来自分类Dev

如何在两个时间范围之间记录日志

来自分类Dev

cassandra获取时间范围内的所有记录

来自分类Dev

根据时间范围删除Cassandra表中的记录

来自分类Dev

如何合并具有相同列的记录并扩展时间范围?

来自分类Dev

只显示从特定时间范围开始增加的记录

来自分类Dev

MYSQL:如何查找带有日期字段的记录,该记录在24小时的时间范围内始终从早上6点到第二天早上6点开始

来自分类Dev

MSSQL:如何查找带有日期字段的记录,该记录在24小时的时间范围内始终从早上6点到第二天早上6点开始

来自分类Dev

查找在给定时间范围内修改的文件

来自分类Dev

查找特定时间范围内文件的命令

Related 相关文章

  1. 1

    在时间范围内弹性查找记录组中的文本

  2. 2

    查找日期范围之间的记录

  3. 3

    查找日期范围之间的记录

  4. 4

    根据日期范围查找记录

  5. 5

    查找记录最多的十年,SQL Server

  6. 6

    SQL查找事件发生最多的时间段

  7. 7

    查找范围之间的记录-SAILS.JS

  8. 8

    查找日期范围之间的丢失记录

  9. 9

    查找跨越记录的日期范围之间的差距

  10. 10

    在SQL中查找日期范围重叠的记录

  11. 11

    使用case语句查找时间范围

  12. 12

    查找时间范围内的月份

  13. 13

    在时间序列中查找不同的范围

  14. 14

    如何根据时间戳查找记录

  15. 15

    查找记录+/- 5秒的日期时间

  16. 16

    Mongodb花费太多时间查找记录

  17. 17

    ActiveRecord按日期时间按时间查找记录

  18. 18

    耗时最多的Oracle SQL查找项目记录了多个小时的条目

  19. 19

    MySQL:在日期时间范围内每小时获取最多计数的同值条目(统计模式)

  20. 20

    记录最少日期的记录并计算特定时间范围内的后续记录

  21. 21

    如何在两个时间范围之间记录日志

  22. 22

    cassandra获取时间范围内的所有记录

  23. 23

    根据时间范围删除Cassandra表中的记录

  24. 24

    如何合并具有相同列的记录并扩展时间范围?

  25. 25

    只显示从特定时间范围开始增加的记录

  26. 26

    MYSQL:如何查找带有日期字段的记录,该记录在24小时的时间范围内始终从早上6点到第二天早上6点开始

  27. 27

    MSSQL:如何查找带有日期字段的记录,该记录在24小时的时间范围内始终从早上6点到第二天早上6点开始

  28. 28

    查找在给定时间范围内修改的文件

  29. 29

    查找特定时间范围内文件的命令

热门标签

归档