汇总基于国家/地区价值

时间:2013-05-15 17:55:11

标签: sql oracle10g

我在Oracle 10g中有以下表格

Country    State/city          No. of males        No. of females
US          TN                  500000                 450000
US          CA                  200000                 180000
US          GA                  600000                 650000
US          KY                  100000                  75000
England  Manchester             900000                 750000
England  London                1000000                 950000
England  Birmingham             250000                 200000
India    Delhi                 1000000                1000000
India    Mumbai                1000000                 900000
India    Chennai                750000                 500000

我希望得到如下所示的输出。

Country    State/city          No. of males        No. of females
US          TN                  500000                 450000
US          CA                  200000                 180000
US          GA                  600000                 650000
US          KY                  100000                  75000
Total                          1400000                1370000
England  Manchester             900000                 750000
England  London                1000000                 950000
England  Birmingham             250000                 200000
Total                          2150000                1500000
India    Delhi                 1000000                1000000
India    Mumbai                1000000                 900000
India    Chennai                750000                 500000
Total                          2750000               19500000

我尝试使用ROLLUP输出,但是我在所有行的末尾只获得了总计。我想计算每个国家的总数。

1 个答案:

答案 0 :(得分:8)

可以使用 GROUP BY GROUPING SETS 表达式完成此操作:

SELECT 
    country, 
    state, 
    SUM(males) AS males, 
    SUM(females) AS females
FROM 
    stats
GROUP BY GROUPING SETS
    ( (country, state),
      (country),
      ()                         -- bonus: a Grand Total
    ) ;

SQL-Fiddle

进行测试
相关问题