【问题标题】:Decimal 2 in calculated field计算字段中的小数 2
【发布时间】:2017-02-27 14:54:31
【问题描述】:

抱歉,我无法获得“%”列的 2 位小数结果。

谁能帮帮我?

这是查询:

SELECT 
    "column1"
    COUNT("column1"),
    COUNT("column1") * 100 / (SELECT COUNT(*) FROM "table") AS "%",
    AVG( "column2" )
FROM 
    "table"
GROUP BY 
    "column1"

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 错字,第一次选择项目后缺少逗号。
  • 帮助使用帮助您 - 请分享一些示例数据,您通过此查询获得的结果以及您想要获得的结果。此外,用正确的rdbms 标记问​​题会有所帮助。

标签: sql count decimal calculated-columns


【解决方案1】:

有些数据库做整数除法,count() 返回一个整数。您应该转换为小数点表示。我认为最简单的方法是乘以 1.0。此外,您不需要子查询;你可以使用窗口函数:

SELECT "column1", COUNT( "column1" ),
       COUNT("column1") * 100.0 / SUM(COUNT(*)) OVER () as percent
       AVG("column2") 
ROM "table"
GROUP BY "column1";

要得到两位小数,转换成十进制类型(或字符串,但前者是标准的):

SELECT "column1", COUNT("column1"),
       CAST(COUNT("column1") * 100.0 / SUM(COUNT(*)) OVER () as DECIMAL(5, 2)) as percent
       AVG("column2") 
FROM "table"
GROUP BY "column1";

另请注意,AVG() 遵循与整数除法相同的规则。如果您想要一个带小数位的值,请乘以 1.0(或进行显式转换)。

【讨论】:

    猜你喜欢
    • 2017-12-18
    • 1970-01-01
    • 2021-11-20
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多