[pgsql-jp: 28435] 四則演算の結果

Norio Kikuta kikuta.norio @ nifty.ne.jp
2002年 12月 24日 (火) 11:03:10 JST


PostgreSQL初心者です。
PostgreSQLのバージョンは7.2.3です。

下記のような計算を行ったとき、例1と例2で値が違ってくるのはなぜでしょうか。
商品別総数量、卸単価は整数で定義しています。
このとき、例1では計算結果が実数で表示されますが、例2では全てゼロと表示されてしまいます。

s.商品別総数量 * s.卸単価 * 100.0 / kei.総計・・・正しい値が返される
s.商品別総数量 * s.卸単価 / kei.総計 * 100.0・・・ゼロの結果が返される

例1
select s.商品名,
       s.商品別総数量 * s.卸単価 as "卸単価",
       s.商品別総数量 * s.卸単価 * 100.0 / kei.総計 as "%"
from (
       select sum(a.数量 * b.卸単価) as "総計"
       from 売上データ a, 商品マスタ b
       where a.商品id = b.商品id
     ) kei,
     (
       select b.商品id, b.商品名, b.卸単価, sum(a.数量) as "商品別総数量"
       from 売上データ a, 商品マスタ b
       where a.商品id = b.商品id
       group by b.商品id, b.商品名, b.卸単価
     ) s;

例2
select s.商品名,
       s.商品別総数量 * s.卸単価 as "卸単価",
       s.商品別総数量 * s.卸単価 / kei.総計 * 100.0  as "%"
from (
       select sum(a.数量 * b.卸単価) as "総計"
       from 売上データ a, 商品マスタ b
       where a.商品id = b.商品id
     ) kei,
     (
       select b.商品id, b.商品名, b.卸単価, sum(a.数量) as "商品別総数量"
       from 売上データ a, 商品マスタ b
       where a.商品id = b.商品id
       group by b.商品id, b.商品名, b.卸単価
     ) s;


********************************
Norio Kikuta
E-Mail ; kikuta.norio @ nifty.ne.jp
********************************




pgsql-jp メーリングリストの案内