Това трябва да прави това, което искате:
SELECT
team_id,
COUNT(*) AS GP,
SUM(is_win) AS Wins,
SUM(NOT is_win) AS Losses,
2 * SUM(is_win) + SUM(NOT is_win) AS Points
FROM
(
SELECT
home_team_id AS team_id,
home_score > visit_score AS is_win
FROM results
WHERE tcl_id = 68
UNION ALL
SELECT
visit_team_id AS team_id,
home_score < visit_score AS is_win
FROM results
WHERE tcl_id = 68
) T1
GROUP BY team_id
ORDER BY Points DESC
Изход за вашите примерни данни:
4, 3, 2, 1, 5
3, 3, 2, 1, 5
1, 3, 1, 2, 4
2, 3, 1, 2, 4
Бележки:
- Изглежда, че вашите примерни данни не съвпадат с очаквания резултат – вашите тестови данни имат само 6 изиграни игри, но очакваният ви резултат има 8 игри. Ето защо моят резултат е различен от вашия.
- Не сте предоставили таблицата за получаване на имената на отборите от идентификаторите на отборите. Просто се присъединете към вашата таблица с имената на отборите, за да получите резултата в желания от вас формат.