#mysql #sql
#mysql #sql
Вопрос:
У меня есть ряд тегов button.
SELECT team, COUNT( team ) AS pld,
SUM( IF( Pts = 3, 1, 0 ) ) AS W,
SUM( IF( Pts = 1, 1, 0 ) ) AS D,
SUM( IF( Pts = 0, 1, 0 ) ) AS L,
SUM( Pts ) AS Pts,
SUM( GF ) AS GF,
SUM( GA ) AS GA,
SUM( GF ) - SUM( GA ) AS GD
FROM (
SELECT home_team_id AS team,
home_goal_number AS GF,
away_goal_number AS GA,
CASE
WHEN home_goal_number > away_goal_number
THEN 3
WHEN home_goal_number = away_goal_number
THEN 1
ELSE 0
END AS Pts
FROM matches
UNION ALL
SELECT away_team_id AS team,
away_goal_number AS GF,
home_goal_number AS GA,
CASE
WHEN away_goal_number > home_goal_number
THEN 3
WHEN away_goal_number = home_goal_number
THEN 1
ELSE 0
END AS Pts
FROM matches
) AS tab
GROUP BY team
ORDER BY Pts DESC
Это работает отлично. Есть только одна проблема. Если две команды заканчивают лигу с одинаковыми очками, первый способ устранить двусмысленность — понять, кто выиграет прямой матч.
Как я могу изменить этот запрос, чтобы сделать это?
Комментарии:
1. Что вы делаете, когда прямой матч заканчивается ничьей?
Ответ №1:
Если вы считаете, что единственный способ узнать о ничьей — это подсчитать очки с помощью показанного вами запроса, вы можете увидеть, что добавить информацию о победителе прямого матча в текущий запрос непросто.
Я бы подумал о том, чтобы поместить ваш запрос в ПРЕДСТАВЛЕНИЕ, а затем создать новый запрос, чтобы использовать представление и вычислить общего победителя, где количество очков у двух команд равно.
Как я уже говорил в своем комментарии, что вы делаете, когда прямой матч заканчивается ничьей или когда более двух команд имеют одинаковое количество очков в конце соревнования? Эти случаи возможны, но для них сложно разработать решение.
Альтернативой является использование разницы мячей, но это может потребовать, чтобы ваша лига изменила свои правила 🙂