如何判断'state'的最后x行是否为1

时间:2012-08-01 01:18:30

标签: mysql sql

我需要SQL查询的帮助。

我有一个带有'州'列的表格。 0表示已关闭,1表示已打开。

不同用户希望在连续x次连续1次事件后收到通知。

使用SQL查询,如何判断“state”的最后x行是否为1?

2 个答案:

答案 0 :(得分: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对行进行排序。

答案 1 :(得分: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