SQLクエリについてサポートが必要です。
'state'列のあるテーブルがあります。0は閉じていることを意味し、1は開いていることを意味します。
x回連続して1つのイベントが発生した後、さまざまなユーザーに通知する必要があります。
SQLクエリを使用すると、「状態」の最後のx行が1であるかどうかをどのように判断できますか?
たとえば、最後の 5 つの連続する行の状態が 1 に等しいかどうかを確認したい場合は、おそらく次のようにすることができます。
SELECT IF(SUM(x.state) = 5, 1, 0) AS is_consecutive
FROM (
SELECT state
FROM table
WHERE Processor = 3
ORDER BY Status_datetime DESC
LIMIT 5
) as x
の場合is_consecutive = 1
、はい、最後の連続する 5 行が ありstate = 1
ます。
編集:コメントで示唆されているようORDER BY
に、最後のn行を取得するには、クエリで使用する必要があります。
より正確にするために、タイムスタンプ列があるStatus_datetime
ため、行の順序付けに使用する必要があります。
次のようなものを使用できるはずです(の数字をチェックしたいHAVING
値に置き換えます):x
SELECT Processor, OpenCount FROM
(
SELECT TOP 10 Processor, DateTime, Sum(Status) AS OpenCount
FROM YourTable
WHERE Processor = 3
ORDER BY DateTime DESC
) HAVING OpenCount >= 10