Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Klasemen Bola Voli MySQL

Ini harus melakukan apa yang Anda inginkan:

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 untuk data contoh Anda:

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

Catatan:

  • Data contoh Anda tampaknya tidak cocok dengan keluaran yang diharapkan - data pengujian Anda hanya memiliki 6 game yang dimainkan, tetapi keluaran yang diharapkan memiliki 8 game. Inilah sebabnya mengapa hasil saya berbeda dari Anda.
  • Anda belum menyediakan tabel untuk mendapatkan nama tim dari id tim. Gabung saja dengan tabel Anda dengan nama tim untuk mendapatkan hasil dalam format yang Anda inginkan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menggunakan COALESCE() dalam klausa WHERE secara optimal?

  2. Susun ulang baris dalam tabel MySQL

  3. Memindahkan dan Mencadangkan Database MySQL Besar

  4. hitung rata-rata tanpa desimal

  5. Buat objek Tanggal di PHP untuk tanggal sebelum 1970 dalam format tertentu