gpt4 book ai didi

sql - 具有多个GROUP BY的总体摘要

转载 作者:行者123 更新时间:2023-12-03 14:01:41 24 4
gpt4 key购买 nike

可以说我有一个名为census的表,其中包含以下信息:

COUNTRY     PROVINCE    CITY        POPULATION
==============================================
USA California Sacramento 1234
USA California SanFran 4321
USA Texas Houston 1111
USA Texas Dallas 2222
Canada Ontario Ottawa 3333
Canada Manitoba Winnipeg 4444


我正在建立国家/省级的报告,这给了我以下几点:

SELECT country, province, SUM(population)
FROM census
GROUP BY country, province;

COUNTRY PROVINCE SUM(POPULATION)
=======================================
USA California 5555
USA Texas 3333
Canada Ontario 3333
Canada Manitoba 4444


我希望报表中包含“总体摘要”行,以便最终结果如下所示:

COUNTRY     PROVINCE    SUM(POPULATION)
=======================================
USA California 5555
USA Texas 3333
Canada Ontario 3333
Canada Manitoba 4444
TOTAL 16665


我熟悉 ROLLUP,但是似乎找不到能满足我需求的组合。使用 GROUP BY ROLLUP(country, province)包含我想要的总值,但是它也包含大量我不关心的额外值。 GROUP BY ROLLUP(country), province也是这样

如何进行“总计”记录?
我目前正在使用 UNION ALL计算它,并使用不同的 GROUP BY重复执行第一个查询的90%,但是由于第一个查询很简单,所以结果很慢且代码很丑。

这是为那些想玩这个游戏的人准备的SQL Fiddle: http://sqlfiddle.com/#!4/12ad9/5

最佳答案

这正是GROUPING SETS表达式的设计目的:

SELECT country, province, SUM(population)
FROM census
GROUP BY GROUPING SETS
( (country, province), -- first group by country and province
() -- then by (nothing), i.e. a total grouping
);


请参见 SQL-Fiddle

关于sql - 具有多个GROUP BY的总体摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25753374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com