我正在编写一个查询来聚合一些数据,在我的select语句中我想写这个:
select coalesce(nullif(sum(field)), '> 1'), 1) from ...
其中,如果NULLIF能够,它会给我field
的总和,除非它大于1,在这种情况下它会给我1.当然,我问不可能有NULLIF ,仅用于进行基本字符串比较。
我不想使用CASE语句的原因是因为我替换field
的地方是一个巨大的表达式,如果我这样做,我必须写两次:
select case when sum(field) > 1 then 1 else sum(field) from ...
我希望postgres有一个王牌,我不必这样做。有没有人遇到过这种困境?
答案 0 :(得分:3)
所以你想要总和的最小值和1?那不是LEAST
函数:
select LEAST(sum(field), 1) from ...