8

Postgres データベースがあり、次のように列ごとに乗算する必要があります。

SELECT SUM(column1*column2) AS res (...)

結果は0です。両方の列がrealタイプです。
しかし、乗算演算子は、次の場合にうまく機能します。

SELECT SUM(column * 100) AS res (...)

PostgreSQL で列を使用して算術演算を行うことは可能ですか?

4

2 に答える 2

12

このクエリは問題なく機能します。

SELECT SUM(column1 * column2) AS res
FROM   tbl;

結果res0の場合、以下が必要です。

  • 0列の 1 つまたは両方にあり、NULL少なくとも 1 つの行にはありません。
  • 0またはNULL、選択された他のすべての行のいずれかまたは両方の列に。

または、他の些細な誤解が関係しています。列のエイリアスresを と混同している可能性がありますresultか?

于 2013-09-23T23:19:31.467 に答える
2

サブクエリを使ってみる

SELECT
  SUM(subq.multiplied_column)
FROM (
  SELECT
    column1 * column2 AS multiplied_column
  FROM
    table
) as subq

NULL 値にも注意してください。column1 または column2 の値が NULL の場合、SUM() のすべての結果が NULL になる可能性があり、使用している言語と接続ライブラリによっては、NULL ではなく 0 が結果として表示される場合があります。

于 2013-09-23T19:05:17.697 に答える