从SQL中选择每N个记录

时间:2016-09-22 06:01:22

标签: sql sql-server vb.net

我有一个数据库,其中数据已定期记录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查询

1 个答案:

答案 0 :(得分:2)

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))