【问题标题】:Select Every Nth Record From SQL从 SQL 中选择每 N 条记录
【发布时间】:2016-09-22 06:01:22
【问题描述】:

我有一个数据库,其中数据以固定的时间间隔记录,即 5 分钟,说它记录了 24 小时,如下表所示。

       Date and Time        Value
    2016-09-17 14:00:00      25.26
    2016-09-17 14:05:00      24.29
    2016-09-17 14:10:00      25.22
    2016-09-17 14:20:00      25.10





    2016-09-17 23:55:00      20.21

我想使用 SQL 查询显示每 1 小时读数 有可能缺少某些读数 预期的输出应该是。

     Date and Time        Value
    2016-09-17 14:00:00      25.26
    2016-09-17 15:00:00      27.29
    2016-09-17 16:00:00      28.12
    2016-09-17 17:00:00      22.11

我可能会丢失一些阅读内容。喜欢

       Date and Time        Value
    2016-09-17 14:35:00      25.26

此读数可能丢失 请提出相同的 SQL 查询

【问题讨论】:

  • 您使用的是哪个 DBMS?
  • SQL 服务器 2012
  • 请考虑另一种方法,尝试在分钟和秒内读取零的行,而不是读取每第 N 条记录。

标签: sql sql-server vb.net


【解决方案1】:
SELECT t1.DateCol,
       t1.Value
FROM yourTable t1
INNER JOIN
(
    SELECT MIN(DateCol) AS firstDate
    FROM yourTable
    GROUP BY FORMAT(DateCol, 'dd/MM/yyyy hh')
) t2
    ON t1.DateCol = t2.firstDate

如果您想每隔 15 分钟分组一次,您可以尝试:

GROUP BY CONCAT(FORMAT(DateCol, 'dd/MM/yyyy hh'),
                FLOOR(DATEPART(MINUTE, DateCol) / 15))

【讨论】:

  • 感谢它的工作正常但仍然有人怀疑间隔是否不是一小时说我想在任何时间间隔看到可能是 15 分钟、30 分钟等等
  • @Lalit 我更新了我的答案。例如,对于 15 分钟,您可以将术语添加到四分之一小时的分组中。
猜你喜欢
  • 2015-03-23
  • 1970-01-01
  • 2020-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 2023-03-15
  • 1970-01-01
相关资源
最近更新 更多