sql >> Base de Datos >  >> RDS >> Mysql

Posiciones de voleibol de MySQL

Esto debería hacer lo que quieras:

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

Salida para sus datos de ejemplo:

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

Notas:

  • Sus datos de ejemplo no parecen coincidir con su salida esperada:sus datos de prueba solo tienen 6 juegos jugados, pero su salida esperada tiene 8 juegos. Es por eso que mi salida es diferente a la tuya.
  • No proporcionó la tabla para obtener los nombres de los equipos a partir de las identificaciones de los equipos. Simplemente únase a su mesa con los nombres de los equipos para obtener el resultado en el formato que desee.