【问题标题】:Avg() function returns '0E-20' instead of '0' in PostgreSQLAvg() 函数在 PostgreSQL 中返回 '0E-20' 而不是 '0'
【发布时间】:2018-09-19 14:29:49
【问题描述】:

我在 PostgreSQL 的 SQL 查询中使用了 avg() 函数。

当我运行查询时,我得到的是0E-20,而不是0(零)。

查询如下。

SELECT AVG(salary) 
FROM EMPLOYEE

注意:我只有一条工资为零的员工记录。

我怎样才能得到0 作为结果而不是特殊响应?

任何帮助将不胜感激。

【问题讨论】:

  • 列数据类型?
  • @jarlh 列数据类型为“BIGINT”
  • 如果该列确实是bigint,则不会出现该结果。听起来更像是定义为realdouble precision。请edit 您的问题(通过单击edit 链接)并添加您用于该行的create table 语句和insert 语句。 Formatted textno screen shots

标签: sql postgresql average


【解决方案1】:

假设您的 salary 列包含浮点数据,您看到的平均值可能只是由于舍入误差,而逻辑上它实际上为零。这里的一些选项是使用ROUNDFLOOR

SELECT FLOOR(AVG(salary)) AS avg_salary   -- or ROUND(AVG(salary))
FROM EMPLOYEE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多