Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Tabelas de vôlei MySQL


Isso deve fazer o que você quer:
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

Saída para seus dados de exemplo:
4, 3, 2, 1, 5
3, 3, 2, 1, 5
1, 3, 1, 2, 4
2, 3, 1, 2, 4

Notas:
  • Os dados de seu exemplo parecem não corresponder ao resultado esperado - seus dados de teste têm apenas 6 jogos jogados, mas o resultado esperado tem 8 jogos. É por isso que minha saída é diferente da sua.
  • Você não forneceu a tabela para obter os nomes das equipes dos IDs das equipes. Basta juntar sua tabela com os nomes das equipes para obter o resultado no formato desejado.