sql count (включая null) из таблицы, где два условия - PullRequest
0 голосов
/ 27 ноября 2018

У меня есть две таблицы, одна из которых team_stats, а другая team_summary.
В team_summary есть 16 tNames, 1 означает победу, 0 означает проигрыш в столбце win_lose на team_stats.

team_summary            team_stats
tName W                 Period tName win_lose
AUT   null              1      AUT   1
CAN   null              2      AUT   1
DEN   null              3      AUT   1
FIN   null              Total  AUT   1
...                     1      CAN   0
                        2      CAN   0
                        ...

Я хочувставить в столбец W в team_summary.
Когда я запрашиваю

select tName, count(*) from team_stats 
where Period='Total' and (win_lose) = 1 group by tName;

, возвращается, например, 14 строк, не считая 0.

tName count(*)
AUT   1
CAN   6
DEN   4
...

Я хочу взять 16 строк, включаяэти 14 значений и 2 значения, которые равны 0 (или ноль).

Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Если у вас есть 16 команд в team_stats и каждая из них имеет информацию «Всего», вам просто нужно:

select tName, win_lose from team_stats 
where Period='Total';

Если вы хотите знать, сколько раз каждая команда появляется в таблице team_stats:

select tName, count(tName) from team_stats
group by tName;
0 голосов
/ 27 ноября 2018

Вы, кажется, хотите update:

update team_summary ts left join
       (select tName, count(*) as wins
        from team_stats 
        where Period = 'Total' and (win_lose) = 1 
        group by tName
       ) t
       on ts.tName = t.tName
    set ts.summary = coalesce(t.wins, 0);
0 голосов
/ 27 ноября 2018

Вы можете попробовать ниже - удалив win_lose = 1 из вашего предложения where

select tName, count(*) from team_stats 
group by tName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...