Используйте count и присоединяйтесь к sql - PullRequest
0 голосов
/ 21 октября 2019

Есть две таблицы с названием страны, лучшие футбольные клубы из этих стран. Я хочу присоединиться к столу и посчитать клубы из каждой страны. следующий код не работает:

- имена таблиц - table2017, table2018

select t.Country, COUNT(t.Country) as '2017 Countries',
       COUNT(a.Country) as '2018 countries'
from table2017 as t
Join table2018 as a
on a.Country = t.Country
group by t.Country

o / p

Country 2017 Countries  2018 countries
England       64             64
France        1               1
Germany       9               9
Italy        25               25
Spain         9               9

ожидаемый ответ:

Country 2017 Countries  2018 countries
England       8              8
France        1              1
Germany       3              3
Italy         5              5
Spain         3              3

Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Вам нужно агрегировать до присоединения :

select t2017.Country, t2017.num_2017, t2018.num_2018
from (select t.country, count(*) as num_2017
      from table2017 t
      group by t.country
     ) t2017 join
     (select t.country, count(*) as num_2018
      from table2018 t
      group by t.country
     ) t2018
     on t2017.Country = t2018.Country;

COUNT() просто подсчитывает количество не NULL значений. Эти два значения одинаковы после JOIN, поэтому код не делает то, что вы хотите.

0 голосов
/ 21 октября 2019

Попробуйте присоединиться к подзапросу для каждого счета

select 
    t1.country, t1Countries_2017, t2.Countries_2018
from 
    (select 
         t.Country, count(t.Country) Countries_2017
     from 
         table2017 
     group by 
         t.Country) t1 
inner join  
    (select 
         t.Country, count(t.Country) Countries_2018
     from 
         table2018
     group by 
         t.Country) t2 on t1.country = t2.country
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...