Pada post kali ini, kita akan belajar SQL dengan dataset hasil liga inggris dari tahun 1993 hingga 2021 dengan tujuan akhir adalah membuat klasemen akhir tiap musim. Untuk datasetnya bisa didownload pada halaman kaggle ini. Kalian bisa download file .csv yang nantinya akan kita upload ke mysql.
Preview dari file csv-nya seperti berikut
Total terdapat 23 kolom. Pada pembahasan kali ini, kolom dipakai hanya kolom A (Season) hingga kolom G. Sebagai penjelasan, kolom Season adalah kolom dari musim berlangsungnya kompetisi, kolom DateTime adalah waktu kickoff, kolom HomeTeam adalah tim yang bertindak sebagai tuan rumah, kolom AwayTeam adalah tim tamu, kolom FTHG (Full TIme Home Goals) adalah jumlah gol dari tim tuan rumah, kolom FTAG(Full Time Away Goals) adalah jumlah gol dari tim tamu, dan kolom FTR adalah kolom keterangan suatu tim menang, draw atau kalah. Ketika tim tuan rumah menang, maka akan terisi H, jika peratndingan berakhir imbang, nilainya adalah D, dan jika tim tamu menanag, maka muncul nilai A.
Setelah mengenal mengenai kolom yang dipakai, langkah selanjutnya adalah mengimpor data csv ke dalam table mysql. Untuk penamaan table bebas, saya sendiri menggunakan nama pl_result dan kolom-kolom tablenya mengikuti dari file csv. Gambaran kolomnya seperti gambar berikut ini. Ada tambahan satu kolom result_id sebagai Primary Key.
Setelah berhasil membuat table, langkah selanjutnya adalah mengimpor file csv ke dalam table. Untuk proses import ke table akan dibuatkan tutorialnya dalam post terpisah.
Preview file setelah berhasil masuk ke file adalah seperti ini. Masih ada kolom lain yang tidak tercapture. Dalam case kali ini kolom yang kita pakai hanya sampai kolom ftr.
Tugas kita kali ini adalah membuat klasemen berdasarkan data ini. Sebagai perbandingan, nantinya kita akan bandingkan dengan data dari halaman premier league. Contohnya seperti gambar berikut
Gambar di atas adalah klasemen pada musim 2020/2021 dimana Manchester City sebagai juara dengan total 86 poin.
Sebagai catatan, urutan penentuan klasemen adalah poin, jika total poin ada yang sama, maka akan diurutkan lagi berdasarkan selisih gol yang lebih banyak, dan jika selisih gol masih sama, maka urutan terakhir adalah jumlah mencetak gol lebih banyak. Dan jika jumlah gol yg dicetak pun sama, posisi klasemen akan dianggap kembar alias sama. Nanti kita lihat apakah ada case seperti ini.
Oke pertama kita akan coba untuk satu musim dulu, yaitu musim 2020/2021 seperti pada gambar di atas. Data kita filter dulu untuk musim 2020-21.
SELECT result_id, season, dt, home_team, away_team, fthg, ftag, ftr
FROM pl_result
WHERE season='2020-21'
Hasilnya sebagai berikut dengan total row sebanyak 380 yang menandakan total pertandingan dalam 1 musim.
Langkah berikutnya adalah mencari unique team, baik dari kolom home_team dan away_team. Total terdapat 20 unique team. Untuk querynya menggunakan UNION yang mana berfungsi untuk menumpuk data menjadi satu bagian dan tidak menampilkan data yang sebelumnya sudah pernah ada pada baris yang lebih dahulu muncul.
SELECT home_team
FROM pl_result
WHERE season='2020-21'
UNION
SELECT away_team
FROM pl_result
WHERE season='2020-21';