如何将整数查询结果限制为 1。返回 2 为 1,返回 1 为 1,返回 0.5 为 0.5,因为它 <= 1。我不想修改表,我只想修改结果。
这是我的确切查询。
select ((select "V01" from sports where "UID" = '1') * 1.0 ) /
(select "V01" from master where "BALL" = 'REQUIREMENT') ;
我正在使用postgres。
如何将整数查询结果限制为 1。返回 2 为 1,返回 1 为 1,返回 0.5 为 0.5,因为它 <= 1。我不想修改表,我只想修改结果。
这是我的确切查询。
select ((select "V01" from sports where "UID" = '1') * 1.0 ) /
(select "V01" from master where "BALL" = 'REQUIREMENT') ;
我正在使用postgres。
为了限制,你会做这样的事情:
select
case
when yourNumber >= 1 then 1
else yourNumber
end
...
然后,您只需将此概念应用于您的查询。
正如 Wiseguy 所指出的,您还可以执行以下操作:
select LEAST(yourNumber, 1)
,因为这是postgresql。
第一个解决方案适用于任何 ANSI SQL 兼容的数据库。
更新
应用于您的查询,我认为(如果我正确理解您想要的)它会是这样的:
select LEAST(1,
((select "V01" from sports where "UID" = '1') * 1.0 ) /
(select "V01" from master where "BALL" = 'REQUIREMENT')
);
使用LEAST
函数,文档:http ://www.postgresql.org/docs/8.3/static/functions-conditional.html 。GREATEST
另外,也请查看
SELECT LEAST(1, <your value>)
EDIT将 GREATEST 替换为 LEAST
尝试这个:
select CASE
WHEN ((select V01 from sports where UID = '1') * 1.0 ) /
(select V01 from master where BALL = 'REQUIREMENT') >= 1
THEN 1
ELSE ((select V01 from sports where UID = '1') * 1.0 ) /
(select V01 from master where BALL = 'REQUIREMENT')
END;