1. ホーム
  2. sql

[解決済み] テーブルの各行に対して計算された Postgres の数式

2022-02-19 17:37:39

質問

PostgreSQLを使用して、以下のようなテーブルを想定しています。

 12184 |               4 |          83
 12183 |               3 |         171
 12176 |               6 |          95

テーブルの各行に対して数式を計算するにはどうしたらよいでしょうか?

例えば、2列目を3列目で割ると、次のような出力になります。

 12184 |   0.04819277108
 12183 |   0.01754385965
 12176 |   0.06315789474

直感的にやってみようと思った。

SELECT col1, col2 / col3 FROM table_name;

しかし、これは整数の上限(つまり切り捨て)部分を返すもので、浮動小数点値が必要です。

どのように解決するのですか?

col2 と col3 が整数であるため、典型的なキャストのトリックが必要です(したがって、結果はデフォルトで整数になります)。

select col1, col2/col3*1.0 from table

または

select col1, col2/col3::float from table

または (SQL標準の方法)

select col1, col2/cast(col3 as float) from table