【问题标题】:Trying to Calculate % of Total Column in SQL尝试在 SQL 中计算总列的百分比
【发布时间】:2021-05-07 05:47:29
【问题描述】:

我有一张按县和邮政编码列出人口的表格。我需要把所有的邮政编码加起来才能得到县里的人口。现在我有了这个,我需要显示每个县的人口占美国的百分比。

这是我目前所拥有的:

select 
distinct "county_name", 
sum("ttl_pop") as county_pop
from neighborhood
group by county_name

如何添加一列来显示每个县的人口占总人口的百分比?

【问题讨论】:

    标签: mysql sql azure subquery


    【解决方案1】:

    您不需要distinct。但是解决您的问题的方法是使用窗口函数:

    select county_name, sum(ttl_pop) as county_pop,
           sum(ttl_pop) / sum(sum(ttl_pop)) over ()
    from neighborhood
    group by county_name;
    

    【讨论】:

    • 谢谢! over()后面的括号里有什么需要的吗?不幸的是,我在尝试这个时遇到了错误
    • @klchase 。 . .没有。这些将整个结果集视为“分区”——这意味着它将所有行中ttl_pop 的总和相加。
    • 这适用于 MySQL 8.0 及更高版本。早期版本不支持窗口函数。
    • @klchase 。 . .你运行的是什么版本的 MySQL? Azure 支持 8.0,我建议你使用最新版本。
    【解决方案2】:

    如果你的 mysql 版本低于 8.0 那么窗口函数将不适合你。

    您需要按如下方式使用子查询:

    select county_name, sum(ttl_pop) as county_pop,
           sum(ttl_pop) / (select sum(tt.ttl_pop) from neighborhood tt) as avg_
      from neighborhood
     group by county_name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-30
      • 2023-02-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多