Mysql
 sql >> Base de données >  >> RDS >> Mysql

Classement MySQL Volley-ball

Cela devrait faire ce que vous voulez :

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

Sortie pour votre exemple de données :

4, 3, 2, 1, 5
3, 3, 2, 1, 5
1, 3, 1, 2, 4
2, 3, 1, 2, 4

Remarques :

  • Les données de votre exemple ne semblent pas correspondre à la sortie attendue :vos données de test n'ont que 6 jeux joués, mais la sortie attendue en compte 8. C'est pourquoi mon résultat est différent du vôtre.
  • Vous n'avez pas fourni le tableau permettant d'obtenir les noms d'équipe à partir des identifiants d'équipe. Joignez-vous simplement à votre tableau avec les noms des équipes pour obtenir le résultat dans le format souhaité.