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