我想在名为Grafana的可视化工具中设置警报规则。问题是,要设置警报规则,查询结果必须是数字,因为他们的工具不支持其他类型(github issue)。
我想检查指定AlertID
的名为colors_of_alerts
的表中的最新示例Color
是否为red_color
。如果是的话,我想发射警报,否则什么都不做。除red_color
外的其他可能值为:green_color
和yellow_color
。
在理想情况下,下面的查询就足够了:
select "Color" from (select "Color" from colors_of_alerts where "AlertID"=72 order by "TimeUTC" desc limit 1) as res where res."Color"='red_circle'
字符串
问题是,我需要查询的返回值是数字类型,但在PostgreSQL中将字符串转换为整数的唯一方法需要字符串保存数字('1'
,'1.901'
等)。
我想找到的东西,将工作如下:if“Color”='red_circle' return 1,otherwise return 0,但是PostgreSQL return
只在函数中工作,研究函数的输入输出对于我的简单查询来说是另一个蠕虫。所以我尝试使用if-else
语句:
DO $$
begin
if exists (select "Color" from (select "Color" from colors_of_alerts where "AlertID"=72 order by "TimeUTC" desc limit 1) as res where res."Color"='red_circle') then
update res set "Color"='1';
else
update res set "Color"='0';
END IF;
end $$;
型
使用0或1 varchar设置结果单元格,然后通过CAST
或::integer
将该varchar转换为number,但它会导致SQL Error [42P01]: ERROR: relation "res" does not exist
问题,这可能是由于表别名命名处理不正确而发生的。请帮助我用简单的命令创建我的查询,因为我认为我的查询是不必要的复杂。
1条答案
按热度按时间h4cxqtbf1#
感谢@MikeOrganek的提示,我已经找到了正确的命令来做需要做的事情,希望这对将来的人有所帮助:
字符串