2016-09-22 68 views
0

我有一个数据库,其中的数据已经以固定的时间间隔记录了5分钟,表示它已记录24小时,如下表所示。从SQL中选择每第N条记录

 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

哪你正在使用DBMS? –

+0

SQL server 2012 – Lalit

+0

请考虑另一种方法,尝试用分钟和秒读零行而不是读取每第N条记录。 –

回答

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

感谢它的工作很好,但仍有一个疑问,如果间隔时间不是一小时说我想在任何时间间隔看到可能是15分钟,30分钟等等 – Lalit

+0

@Lalit我更新了我的答案。例如,在15分钟内,您可以为该季度小组添加一个词语。 –

+1

感谢它像魔术一样工作 – Lalit