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なので。

最初のソリューションは、ANSISQL互換のデータベースで機能します。

アップデート

あなたの質問に当てはめると、私は(あなたが何を望んでいるかを正しく理解していれば)次のようになると思います:

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関数、docsを使用します: 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 に答える