• ベストアンサー

時系列データの抜けの調べ方

お世話様です。 SQLite3を使い、0秒、30秒毎にデータを獲得しています。 通常は1日2880レコード作成するのですが、諸事情で歯抜けになる場合があります。現状全件取り込んで歯抜けを確認しているのですが、 SQL文を用いてデータが獲得できなかった(レコードが存在しない)時刻を、サクっと獲得できるものでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#182251
noname#182251
回答No.3

#2です >データ獲得間隔が変わる場合があります データ獲得間隔で割った view(クエリ)を介在させては? 試してみました。30間隔の場合 SELECT [time]/30 AS c FROM 5824933sampling; を介在させて SELECT [5824933check].id, [5824933div].c FROM 5824933check LEFT JOIN 5824933div ON [5824933check].id = [5824933div].c WHERE ((([5824933div].c) Is Null)); 当然のことながら、テーブル名やフィールド名は試験用に適当な(仮の)ものです。間隔が変わるごとに view を、動的に変化させる。

TAMEKITI7
質問者

お礼

回答ありがとうございます Viewって機能を調べてみます! 仮のものとは思いますが、5824933っていうのは何か意味があるのでしょうか?

その他の回答 (2)

noname#182251
noname#182251
回答No.2

30秒置きに時刻の書き込まれた2880レコードからなるチェック用テーブルを作成し、これと当該テーブルをleft join で繋いで,nullになるレコード(時刻)を集めては?

TAMEKITI7
質問者

補足

回答ありがとうございます。 0,30,60,90...86370 と データの秒換算とを比較するということですね。 なるほど、テーブルを作成すれば良いですね。 ただ・・・データ獲得間隔が変わる場合があります。情報不足でした、せっかくお答えいただいたのにすみません。 獲得間隔が変わるとなれば全行とってきてから確認するほうが いいのかもしれませんね。

noname#111181
noname#111181
回答No.1

current_timestamp で現在日時を文字列として返すコマンドです。 これをselect文の中に埋め込んでみてはいかがでしょう。

TAMEKITI7
質問者

補足

回答ありがとうございます。 SELECT文に現在時刻を埋め込む。。。 できればもう少しヒントをお願いします。

関連するQ&A