我有下面这段代码,是我在MySQL 5.6中编写的:
INSERT INTO Totals
SELECT
Zone,
State,
COUNT(Sponsored),
COUNT(Enrolled),
COUNT(PickedUp)
FROM MasterData
GROUP BY Zone, StateName
WITH ROLLUP;
那会产生以下摘要总数:
Zone 1 Sponsored Enrolled Picked Up
Alaska 0 0 0
Arizona 1 3 1
California 3 6 0
Colorado 0 4 2
Guam 0 0 0
Hawaii 0 1 0
(totals) 4 14 3
Zone 2
Idaho 1 0 0
Montana 0 1 1
Nevada 0 0 1
New Mexico 0 1 4
North Dakota 4 8 4
Oregon 0 0 1
South Dakota 0 1 0
Utah 0 1 0
Washington 0 1 1
Wyoming 0 1 1
(totals) 5 14 13
(gr. totals) 9 28 16
我正在迁移到PostgreSQL 9.5,并需要生成这些相同类型的总计。我有一种感觉,新实现的(自9.5版本以来)GROUPING SETS
、CUBE
和ROLLUP
函数可能会有所帮助,但我不知道如何使用它们来获取这些结果。据我所读,这些函数应该使生成这样的汇总报告变得更加容易。