2013-05-15 4 views
3

У меня есть следующая таблица в Oracle 10gRollup на основе стоимости страны

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, но в конце всех строк получаю только общее количество. Я хотел бы рассчитать общее количество для каждой страны.

ответ

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

Смежные вопросы