0

SQLクエリについてサポートが必要です。

'state'列のあるテーブルがあります。0は閉じていることを意味し、1は開いていることを意味します。

x回連続して1つのイベントが発生した後、さまざまなユーザーに通知する必要があります。

SQLクエリを使用すると、「状態」の最後のx行が1であるかどうかをどのように判断できますか?

4

2 に答える 2

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ため、行の順序付けに使用する必要があります。

于 2012-08-01T01:43:16.317 に答える
0

次のようなものを使用できるはずです(の数字をチェックしたい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
于 2012-08-01T02:07:29.987 に答える