объединяя два разных набора запросов - PullRequest
0 голосов
/ 08 мая 2019

Ниже моя таблица и население по каждому городу.

City state country population
c1   s1   co1   100000
c2   s1   co1   100000
c3   s1   co1   100000
c11  s2   co1   100000
c12  s2   co1   100000

А мне нужен вывод следующим образом

s1 300000
s2 200000
co1 500000

Может кто-нибудь помочь в этом с использованием сервера SQL или Teradata будет признателен

Ответы [ 4 ]

1 голос
/ 08 мая 2019

применить работает, как говорит Йогеш, но это может быть легче понять

 select 'state' as t, state as s, sum(population) as total
 from table_you_did_not_name
 group by state

 union all

 select 'country' as t, country as s, sum(population) as total
 from table_you_did_not_name
 group by country
1 голос
/ 08 мая 2019

Вы можете использовать apply:

select col, sum(population)
from table t cross apply
     ( values (state, population), (country, population) 
     ) tt(col, population)
group by col;

Вы также можете использовать union all для других СУБД:

select t.state, sum(t.population)
from table
group by t.state
union all
select t.country, sum(t.population)
from table
group by t.country;
0 голосов
/ 08 мая 2019

Простое решение - вычислить их и объединить вместе

select  state, sum(population)
from table 
group by  state
union all 
select country,  sum(population)
from table 
group by  country
0 голосов
/ 08 мая 2019

Вам нужно 2 разных группировки, а затем объединить их с UNION:

select state column1, sum(population) column2
from tablename
group by state
union all
select country, sum(population)
from tablename
group by country
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...