获取表中最后X行内的值出现次数

时间:2013-02-24 15:40:47

标签: sql postgresql postgresql-9.2

我正在为我的服务编写一个nagios插件,我想查看最后X次操作中有多少导致错误。

我已经提出了这个完成工作的查询,但是从select中选择对我来说似乎很混乱,我想知道是否还有其他更好的解决方案。

SELECT 
  count(id) 
FROM 
  (SELECT * FROM table ORDER BY id DESC LIMIT 10) as T 
WHERE error IS NOT NULL;

这会计算表格中最后10个内的行数(id是一个递增的序列),其中错误字段不为空。

1 个答案:

答案 0 :(得分:2)

这个解决方案非常优雅。查询必须做两件事:识别最后十行,然后计算错误数。这种结构准确地捕获了它需要做的事情。

您可以删除where子句并使用:

select count(error)

from子句中的子查询非常有用,没有理由将它们视为“不优雅”。