SQL:计算组的不同变体的总平均值

时间:2019-02-25 11:49:11

标签: mysql sql

我正在使用一个表格,该表格具有以下20年不同的信息

  1. 给定年份的公民收入
  2. 显示市民居住地的地区
  3. 代表本年度公民收入的年份

我正在按功能分组,以便获得每个组的平均收入水平。最近我在这里得到了帮助(SQL Group by. Add new row with average result for all groups) 因此我可以为所有区域添加一个带有平均收入的额外行。

select avg(income),region,year,count(*) as population_size
from income_region group by region,year
union all
select avg(income),'All','All',count(*) as population_size from income_region

但是,当我在组中添加额外的“年份”列并尝试对年份和地区进行“全部合并”解决方案时,它仅计算所有年份和所有地区的平均收入。

理想情况下,我还将拥有以下类型的新群组:

  • year = 2001时的平均收入
  • year = 2002' ...等(所有年份)的平均收入
  • region = 'North America'时所有年份的平均收入
  • region = 'Europe'等所有年份的平均收入(对于所有地区)

这怎么办?

2 个答案:

答案 0 :(得分:0)

尝试使用with rollup

select region, year, count(*) as population_size, avg(income)
from income_region
group by region with rollup;

您可以参考documentation以获得更多详细信息。

答案 1 :(得分:0)

只需使用汇总

select avg(income),region,year,count(*) as population_size
from income_region group by region with rollup