我需要SQL查询的帮助。
我有一个带有'州'列的表格。 0表示已关闭,1表示已打开。
不同用户希望在连续x次连续1次事件后收到通知。
使用SQL查询,如何判断“state”的最后x行是否为1?
答案 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