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

MySQL volleyball stilling

Dette skulle gøre, hvad du vil:

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 for dine eksempeldata:

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

Bemærkninger:

  • Dine eksempeldata ser ikke ud til at stemme overens med dit forventede output - dine testdata har kun spillet 6 spil, men dit forventede output har 8 spil. Det er derfor, mit output er anderledes end dit.
  • Du har ikke angivet tabellen for at få holdnavnene fra team-id'erne. Du skal bare slutte dig til din tabel med holdnavnene for at få resultatet i det format, du ønsker.



  1. Sådan importeres CSV-fil til MySQL-tabel

  2. Find linjeskift og vognretur (\r\n) i MySQL

  3. Hvordan indsætter man flere arrays i en database?

  4. Forhindring af cachelagring af forespørgsler i MySQL