sqlについて質問があります。
ひとつのテーブルに以下のような大量の時系列データがあります。時間は1分間隔のときもあれば5分間隔のときもありランダムです。
テーブル名:test01
計測時間 | データ | データid |
---|---|---|
2022/06/06 0:00:00 | 1.001 | 0 |
2022/06/06 0:01:00 | 1.003 | 0 |
: | : | : |
2022/12/01 0:00:00 | 2.005 | 0 |
2022/06/06 0:00:00 | 2.001 | 1 |
2022/06/06 0:01:00 | 2.003 | 1 |
: | : | : |
2022/12/01 0:00:00 | 1.005 | 1 |
2022/06/06 0:00:00 | 3.001 | 2 |
: | : | : |
このテーブルから一つのデータid(以下ではデータid=0)の1時間間隔で高速にデータを抽出しようとしており、いろいろ試しているのですが、
以下のコマンドを入力した場合に比較的速くデータが抽出できました。
mysql
1set @dt := '2022-06-05 23:00:00'; 2select(@dt := @dt + interval 1 hour) as time, データ, データid from test01 where 計測時間 = @dt + interval 1 hour and データid =0 and @dt<='2022-12-01 0:00:00';
sql結果
time | データ | データid |
---|---|---|
2022/06/06 0:00:00 | 1.001 | 0 |
: | : | : |
2022/06/06 0:00:00 | 2.005 | 0 |
しかし以下のようにデータがない期間をセットする場合にそこで検索が止まってしまい、それ以降の結果が得られませんでした。
mysql
1set @dt := '2022-06-05 22:00:00'; #←23:00:00から22:00:00に変更 2select(@dt := @dt + interval 1 hour) as time, データ, データid from test01 where 計測時間 = @dt + interval 1 hour and データid =0 and @dt<='2022-12-01 0:00:00';
sql結果
time | データ | データid |
---|---|---|
実際にはwhere句でマッチしない時間については、無視して出力してほしいのですが、もし改善案がありましたらご教授いただけませんでしょうか。
よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/07 00:55 編集
2022/06/06 07:56 編集
2022/06/06 08:01
2022/06/06 08:07
2022/06/07 01:04 編集
2022/06/07 01:29 編集
2022/06/07 02:34
2022/06/07 04:08