为表中的每一行计算Postgres数学表达式

时间:2009-11-22 22:28:29

标签: sql math postgresql

使用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;

但是返回上限(即向下舍入)整数部分,我需要浮点值。

5 个答案:

答案 0 :(得分:15)

需要典型的强制转换技巧,因为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

答案 1 :(得分:1)

您可以在SELECT子句中使用算术表达式,如下所示:

SELECT col1 / col2 AS new_name
FROM t

答案 2 :(得分:0)

select col1, col2/col3 from table;

应该有效。 col2和col3不是数字吗?

答案 3 :(得分:0)

尝试这样的查询:

SELECT col1, col2 / col3::float FROM table_name;

答案 4 :(得分:0)

在PgSql中输入列。所以,如果你想操作它们;你需要施放专栏。

假设您有一个列'分钟',并且您想在列'mintues'的每个值中添加'+5'

因为您要添加整数值,所以分钟列必须是整数,然后才能执行添加。

因此方式不正确:

select *, minutes+5 from my table>>语法错误

select *, minutes::int + 5 from mytable>>给出输出