【问题标题】:Calculate an average as a percent?以百分比计算平均值?
【发布时间】:2014-06-13 17:05:16
【问题描述】:

这是一个简单的问题,我很惊讶我找不到答案。 我需要的只是计算一列的平均值并将输出作为百分比。

Select round(avg(amount)::numeric, 2)
From Table

我只需要弄清楚如何计算出百分比,现在它显示为 12345.67,我将如何在查询中将该输出转换为百分比?

【问题讨论】:

  • 百分之几?例如,如果列的值为:1000、2000、3000 -> 平均值将为 2000。您认为应该得到多少百分比值?
  • 只是一个百分比格式的平均值。没有什么其他的了。
  • 百分比本质上是一个分数。 50% 表示总共 100 个中的 50 个。在您的情况下,您有分数的分子。你的分母是什么?就像我在之前的评论中询问的那样,“金额”列的值是否为:1000、2000、3000;那么平均值将是 2000。您期望的输出是多少?
  • 啊,我明白了,你指的是我当前的输出。我当前的输出是正确的,我只需要将输出转换为百分比即可。

标签: sql postgresql average


【解决方案1】:

也许你需要这样的东西:

select avg(amount) * 100 / sum(amount) 
from Table

或者你可以像这样添加一个百分号:

select CAST(avg(amount) * 100 / sum(amount)as VARCHAR(max)) + '%' AS Perc
from Table

或者您可以将一个符号连接到您的查询:

Select CAST(round(avg(amount)::numeric, 2)as VARCHAR(max)) + '%' AS Perc
From Table 

【讨论】:

  • 那是不正确的,因为您最终可能会得到平均 22 个,例如一百万的总和。平均值可能是 22/100,但如果有 10000 行,您不会以这种方式获得平均值。
  • @Andrew 这取决于你所追求的。如果您希望平均值占总数的百分比,这是一种方法。
  • 他得到一个基于平均值的百分比,而不是所有行的总和。前提是这是他需要的。
  • 这些是用于 Postgresql 的吗?
  • 它是用 T-SQL 编写的。
【解决方案2】:

结果/总计 * 100 = 平均值

在你的情况下,结果是:avg(amount)::numeric

Total 是amount 的最大值。

【讨论】:

  • 那会是Result / sum(amount) * 100吗?或者你可以在那里指定。
【解决方案3】:

最好的办法是使用任何可用的工具。但是有一种方法可以作为查询来完成。

尝试将平均值除以总和乘以 100。

所以你想要平均值,如下所示,除以总和,然后乘以 100 得到总和的 100%。

select avg(amount) / sum(amount) * 100 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 1970-01-01
    • 2020-05-28
    相关资源
    最近更新 更多