转换语法以将总和转换为浮点数

MAK*_*MAK 38 sql postgresql casting type-conversion postgresql-9.3

使用PostgreSQL 9.3,我想将计算值转换为数据类型float.

我的第一次尝试:

SELECT float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

syntax error at or near "SUM"
Run Code Online (Sandbox Code Playgroud)

我的第二次尝试:

SELECT to_float(SUM(Seconds))/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

 function to_float(bigint) does not exist
Run Code Online (Sandbox Code Playgroud)

Erw*_*ter 70

还有速记转换语法:

SELECT sum(seconds)::float / -1323 AS averag;
Run Code Online (Sandbox Code Playgroud)

  • @MAK:两者都这样做.我*[几乎](http://stackoverflow.com/questions/28552825/postgres-using-an-index-for-one-table-but-not-another/28555617#28555617)*总是使用更短更清晰的( IMO)`:: target_type`.按照我的问题和评论中的链接,您将找到所有要知道的内容. (2认同)

Mur*_*nik 46

您需要使用以下cast语法:

SELECT CAST (SUM(Seconds) AS FLOAT)/-1323 AS Averag;
Run Code Online (Sandbox Code Playgroud)

  • 在PostgreSQL中,`cast`用于类型转换(例如,`int`到`float`,就像这个例子那样),`convert`用于改变字符串encondings. (6认同)

Sou*_*vik 5

这不是精确的铸造,而是完成工作的技巧:) 并且几乎可以在任何语言中使用。

SELECT SUM(Seconds)/-1323.0 AS Averag;

或者

SELECT SUM(Seconds)*1.0/-1323 AS Averag;