Подсчитать количество побед, сгруппированных по футбольной команде - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть таблица, матчи , где я храню футбольные матчи между двумя командами, местные и посетитель .Затем я также храню, если местная команда выиграла, localwin , как tinyint (1) - 1, если они выиграли, и 0, если они проиграли.Моя таблица выглядит так:

local           visitor       localwin
Manchester      Barcelona         1
Manchester      Real Madrid       0
Real Madrid     Bayern            0
Bayern          Barcelona         1

Как бы я посчитал, сколько раз разные команды выиграли?

Я знаю, что мне, вероятно, нужны COUNT и GROUP BY, но я не уверенкак это сделать.

Ответы [ 2 ]

0 голосов
/ 16 февраля 2019

Это:

select t.team, count(m.localwin) wins
from (
  select local team from matches
  union
  select visitor team from matches
) t left join matches m
on t.team = (case m.localwin when 1 then m.local else m.visitor end) 
group by t.team

также будет включать команды с 0 победами.Смотрите демо

0 голосов
/ 16 февраля 2019

Вы можете использовать выражение case для определения победителя, а затем сгруппировать его и подсчитать вхождения:

SELECT   CASE localwin WHEN 1 THEN local ELSE visitor END, COUNT(*)
FROM     matches
GROUP BY CASE localwin WHEN 1 THEN local ELSE visitor END

Примечание: Этот запрос предполагает, что если местная команда не выиграла, то победитель выиграл, т. Е. Ничьих нет.Если рисование является опцией, выражение case может потребовать некоторой настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...