2016-09-22 5 views
0

データが定期的にログに記録されているデータベースを持っています。下の表に示すように、ログが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 

この読みは を欠落している可能性がありますが、代わりに15分ごとに、グループに望んでいた場合、あなたは試みることができると同じ

+1

どのDBMSを使用していますか? –

+0

SQL server 2012 – Lalit

+0

もう1つのアプローチを考えてください。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 

のためのSQLクエリを提案してください:

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

ありがとうございます。うまくいっていますが、1時間の間隔でなければまだ疑問に思っています。いつでも見たいと思っています.15分、30分などあります。 – Lalit

+0

@Lalit私は自分の答えを更新しました。たとえば、15分間は、1時間の間、グループに用語を追加することができます。 –

+1

ありがとうIt's Like Like Magic – Lalit

関連する問題