Mysql
 sql >> Database >  >> RDS >> Mysql

Classifica MySQL di pallavolo

Questo dovrebbe fare quello che vuoi:

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

Output per i tuoi dati di esempio:

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

Note:

  • I dati di esempio non sembrano corrispondere all'output previsto:i dati di test hanno giocato solo 6 partite, ma l'output previsto ha 8 partite. Questo è il motivo per cui il mio output è diverso dal tuo.
  • Non hai fornito la tabella per ottenere i nomi delle squadre dagli ID delle squadre. Unisciti al tuo tavolo con i nomi delle squadre per ottenere il risultato nel formato che desideri.