SQL分组依据。添加所有组平均结果的新行

时间:2019-02-25 07:31:09

标签: sql

我正在使用一张表格,其中有该地区每个公民的收入,并且我希望能够通过一个查询(理想情况下)查找两件事:

  1. 每个地区的平均收入
  2. 所有地区的平均收入。

要完成第一个任务,我将按照以下条件进行分组:

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

但是,以上内容并未显示所有地区的平均收入。而且我无法总结平均收入,因为每个地区的人口规模都不同。为此,我还需要创建以下查询:

select avg(income),count(*) as population_size from income_region

是否有一种方法可以将后一个查询带入第一个查询并将其命名为“全部”,而不是区域名称。

2 个答案:

答案 0 :(得分:1)

全部使用联盟

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

答案 1 :(得分:0)

大多数数据库支持rollupgrouping sets

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

或者:

select region, avg(income), count(*) as population_size
from income_region
group by grouping sets ( (region), () );