0

如何将整数查询结果限制为 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。

4

3 回答 3

2

为了限制,你会做这样的事情:

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')
       );
于 2012-08-01T15:23:04.433 回答
1

使用LEAST函数,文档:http ://www.postgresql.org/docs/8.3/static/functions-conditional.html 。GREATEST另外,也请查看

SELECT LEAST(1, <your value>)

EDIT将 GREATEST 替换为 LEAST

于 2012-08-01T15:24:28.297 回答
0

尝试这个:

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;
于 2012-08-01T15:26:15.803 回答