![3つの連続したレコードとそれぞれのデータを検索するSQLクエリ](https://rvso.com/image/1585729/3%E3%81%A4%E3%81%AE%E9%80%A3%E7%B6%9A%E3%81%97%E3%81%9F%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A8%E3%81%9D%E3%82%8C%E3%81%9E%E3%82%8C%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8BSQL%E3%82%AF%E3%82%A8%E3%83%AA.png)
値が0.7以上で、少なくとも3回連続して出現するデータを選択する必要があります。
hourly recorded per day
Hours 00 0100 0200 0300 0400 0500
ValueNumber .7 .8 .5 .4 .8 .85 so on
問題は、0.7 以上で 3 回出現するデータを選択できるが、連続していないことです。ご協力いただければ幸いです。
select distinct encounterId, COUNT(valueNumber)
FROM table pta
where interventionId in (2201,2202)
and pta.valueNumber >=0.7
and pta.valueNumber is not null
group by encounterId
having COUNT(hours)>=3
さらに詳しい情報が必要な場合は、お気軽にお問い合わせください。データベースは巨大で、すべての列が「InterventionID」として記録されます。上記は検索の基準です。これが完了したら、これを一時テーブルに入れてレコードを取得できます。何らかの解決策を期待しています。
ありがとう
答え1
WITH cte AS ( SELECT series,
date_time,
value,
LEAD(value) OVER (PARTITION BY series
ORDER BY date_time) lead1,
LEAD(value, 2) OVER (PARTITION BY series
ORDER BY date_time) lead2
FROM datatable
WHERE value >= 0.7 )
SELECT series, date_time, value
FROM cte
WHERE lead1 >= 0.7
AND lead2 >= 0.7
シリーズがない場合は、フィールドセットと PARTITION BY 句から削除します。