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

SQL分组依据。为所有组添加具有平均结果的新行,sql,Sql,我正在使用一个表,其中我有一个地区每个公民的收入,我希望能够通过一个查询查询两件事: 每个地区的平均收入 所有区域的平均收入。 要完成第一步,我将通过以下方式进行分组: select avg(income),region,count(*) as population_size from income_region group by region 然而,上述数据并未显示所有地区的平均收入。我不能总结平均收入,因为每个地区的人口规模不同。为此,我还需要创建以下查询: select avg(inco

我正在使用一个表,其中我有一个地区每个公民的收入,我希望能够通过一个查询查询两件事:

每个地区的平均收入 所有区域的平均收入。 要完成第一步,我将通过以下方式进行分组:

select avg(income),region,count(*) as population_size from income_region group by region
然而,上述数据并未显示所有地区的平均收入。我不能总结平均收入,因为每个地区的人口规模不同。为此,我还需要创建以下查询:

select avg(income),count(*) as population_size from income_region
是否有办法将后一个查询放入第一个查询,并将其命名为All,而不是区域名称

使用union all

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

大多数数据库支持汇总集或分组集:

或:

您可以使用rollup—您使用的是哪种DBMS产品?
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), () );