- Home
- PHP MYSQLi
- Mencari Nilai Max dan Min di PHP
Mencari Nilai Max dan Min di PHP
Posted in at 17 Mei 2017 With
Tutorial kali ini kita akan membahas Cara Mencari Nilai Max (Maksimum) dan Nilai Minimum di PHP , dengan kata lain kita akan menggunakan fungsi PHP untuk mencari nilai tertinggi dan nilai terendah di PHP.
Langsung saja kita ke inti pembahasan mencari nilai terbesar
MAX
fungsi max digunakan untuk mencari nilai tertinggi / terbesar , berikut ini contoh nya :
<?php echo max(3,23,8,19,25); ?>Hasil Yang di dapat : 25
MIN
Fungsi min digunakan untuk mencari nilai terendah / terkecil, berikut ini contoh penggunaanya :
<?php echo min(3,23,8,19,25); ?>Hasil yang di dapat adalah : 3
Bagaimana.. ? mudah bukan dalam mecari nilai terendah dan tertinggi di PHP MYSQL.. ? Selamat mencoba
Artikel Rekomendasi
Membuat Formulir Registrasi Pengguna dengan PHP MYSQL
Previous Post
Edit Data Combobox Terpilih di Form Edit PHP MYSQL
Next Post
Twitter Facebook Google+ Buffer
Artikel Terkait- Edit Data Combobox Terpilih di Form Edit PHP MYSQL
- Menampilkan data dari database ke checkbox dan otomatis tercentang di PHP
- Membuat Login Verifikasi Email PHP dan MySQL
- Validasi Upload Type Image and Size Image
- Cara Mudah Membuat Validasi Angka Lengkap
- Cara Menampilkan Ukuran File atau Gambar dengan PHP
- Memeriksa Input Angka dengan PHP
- Mencegah Sql Injection dengan PHP
- Tampil data di beberapa textbox Berdasarkan Combobox
- Cara Menghapus data Mysql Dengan PHP
Mencari nilai terbesar di mysql pada command line client ;
mysql>select max(nilai yang akan kita cari) as 'max nilai yang akan kita cari' from dari tabel yang akan kita cari nilai terbesar ;
Sebelum anda mencari nilai terbesar dengan dengan Query PHP Mysql yang pasti komputer atau laptop anda sudah terpasang Aplikasi yang memiliki server lokal atau Localhost, jika belum terpasang jika kita ketik pada Command Line sudah pasti akan Eror atau tidak bisa.
untuk Aplikasi yang mempunyai server lokal atau localhost sebagai baerikut : XAMPP, Apache, App Serv, dan Lain Sebagainya.
Aplikasi terinstal, sebelum mencari nilai tertinggi kita harus buat dulu Database
lalu Tabel dan isi tabel anda dengan nilai yang berbeda - beda. setelah semua sudah dibuat baru kita coba Query Mysql dibawah ini :
Contoh :
- mysql> select max(harga) as 'maxharga' from barang ;
Jika Berhasil Maka akan tampil seperti diatas.
Good Luck.
Share on Facebook
Share on Twitter
Share on Google+
Share on LinkedIn
Subscribe to receive free email updates:
Untuk mencari nilai maksimal pada suatu tabel, kita dapat menggunakan perintah SELECT MAX, Untuk mencari nilai minimal menggunakan SELECT MIN, dan untuk Nilai Rata-rata menggunakan SELECT AVG.
Contoh :
TABEL 1 (Rangkuman_Nilai):
Nama
Nilai
Dwiky
74
Yoga
72
Ilham
88
Efendi
94
Ratna
75
Mega
75
Yoyo
75
Dari tabel diatas misalnya kita ingin menampilkan nama dengan nilai terbesar. Berikut ini query untuk memanggilnya :
Masalah SQL query yang akan saya bahas pada artikel ini adalah masalah yang saya cukup yakin sering kita temui ketika membuat aplikasi. Group-wise Maximum adalah cara untuk mendapatkan baris dengan nilai tertinggi dari setiap grup. Pada artikel ini kita akan mengambil contoh top skor Liga Inggris (EPL) musim 2015–2016.
Pada artikel ini kita hanya akan membahas satu solusi yaitu menggunakan self joinsederhana dan tidak menjabarkan alternatif lain. Database server yang digunakan untuk contoh adalah MariaDB/MySQL. Tetapi harusnya dapat diaplikasikan ke semua RDBMS karena menggunakan standard SQL.
Contoh Masalah untuk Group-wise MaximumContoh DataTampilkan daftar pencetak gol terbanyak untuk sebuah klub, urutkan berdasarkan jumlah gol terbanyak dan kelompokkan berdasarkan nama klub
Untuk memudahkan pemahaman jumlah record yang digunakan untuk contoh hanyalah sedikit. Berikut ini adalah data top skor Liga Inggris musim 2015–2016. Nama tabel yang digunakan adalah top_scores.
shell> SELECT * FROM top_scores;+----+------------------+-------------------+-----------+-------+
| id | player | club | season | goals |
+----+------------------+-------------------+-----------+-------+
| 1 | Alexis Sanchez | Arsenal | 2015-2016 | 13 |
| 2 | Troy Deeney | Watford | 2015-2016 | 13 |
| 3 | Romelu Lukaku | Everton | 2015-2016 | 18 |
| 4 | Harry Kane | Tottenham Hotspur | 2015-2016 | 25 |
| 5 | Oliver Giroud | Arsenal | 2015-2016 | 16 |
| 6 | Anthony Martial | Manchester United | 2015-2016 | 11 |
| 7 | Riyad Mahrez | Leicester City | 2015-2016 | 17 |
| 8 | Gylfi Sigurdsson | Swansea City | 2015-2016 | 11 |
| 9 | Jamie Vardy | Leicester City | 2015-2016 | 24 |
| 10 | Odion Ighalo | Watford | 2015-2016 | 15 |
| 11 | André Ayew | Swansea City | 2015-2016 | 12 |
| 12 | Diego Costa | Chelsea | 2015-2016 | 12 |
+----+------------------+-------------------+-----------+-------+
12 rows in set (0.00 sec)
Dan hasil yang diharapkan nantinya adalah seperti dibawah ini.
+----+-----------------+-------------------+-----------+-------+| id | player | club | season | goals |
+----+-----------------+-------------------+-----------+-------+
| 4 | Harry Kane | Tottenham Hotspur | 2015-2016 | 25 |
| 9 | Jamie Vardy | Leicester City | 2015-2016 | 24 |
| 3 | Romelu Lukaku | Everton | 2015-2016 | 18 |
| 5 | Oliver Giroud | Arsenal | 2015-2016 | 16 |
| 10 | Odion Ighalo | Watford | 2015-2016 | 15 |
| 11 | André Ayew | Swansea City | 2015-2016 | 12 |
| 12 | Diego Costa | Chelsea | 2015-2016 | 12 |
| 6 | Anthony Martial | Manchester United | 2015-2016 | 11 |
+----+-----------------+-------------------+-----------+-------+
8 rows in set (0.00 sec)Percobaan Query yang Gagal
Sepertinya mudah untuk mendapatkan hasil yang diharapkan dengan hanya memanfaatkan group by dan order by. Mari kita coba.
SELECT id, player, club, season, MAX(goals) AS goalsFROM top_scores GROUP BY club ORDER BY goals DESC;
Hasilnya adalah sebagai berikut.
+----+------------------+-------------------+-----------+-------+| id | player | club | season | goals |
+----+------------------+-------------------+-----------+-------+
| 4 | Harry Kane | Tottenham Hotspur | 2015-2016 | 25 |
| 7 | Riyad Mahrez | Leicester City | 2015-2016 | 24 |
| 3 | Romelu Lukaku | Everton | 2015-2016 | 18 |
| 1 | Alexis Sanchez | Arsenal | 2015-2016 | 16 |
| 2 | Troy Deeney | Watford | 2015-2016 | 15 |
| 8 | Gylfi Sigurdsson | Swansea City | 2015-2016 | 12 |
| 12 | Diego Costa | Chelsea | 2015-2016 | 12 |
| 6 | Anthony Martial | Manchester United | 2015-2016 | 11 |
+----+------------------+-------------------+-----------+-------+
8 rows in set (0.00 sec)
Sepertinya sesuai yang diharapkan. Tunggu dulu! Coba lihat baris Riyad Mahrez (Leicester City), Alexis Sanchez (Arsenal) dan Gylfi Sigurdsson (Swansea City) mereka harusnya tidak masuk ke dalam hasil. Karena yang kita inginkan hanyalah pencetak gol terbanyak. Harusnya yang masuk adalah nama berikut Jamie Vardy, Oliver Giroud dan André Ayew.
Solusi untuk Group-wise MaximumPada hampir setiap masalah cara yang menurut saya efektif adalah dengan memecahnya menjadi bagian-bagian yang sederhana. Untuk kasus ini langkah pertama adalah kita akan mendapatkan goal terbanyak dikelompokkan berdasarkan nama klub terlebih dahulu.
SELECT club, MAX(goals) AS max_goals FROM top_scores GROUP BY club;Pada query diatas kita tidak memperdulikan urutan, hasil dari query diatas adalah seperti dibawah.
+-------------------+-----------+| club | max_goals |
+-------------------+-----------+
| Arsenal | 16 |
| Chelsea | 12 |
| Everton | 18 |
| Leicester City | 24 |
| Manchester United | 11 |
| Swansea City | 12 |
| Tottenham Hotspur | 25 |
| Watford | 15 |
+-------------------+-----------+
8 rows in set (0.00 sec)
Langkah berikutnya adalah kita akan melakukan self join tabel top_scores dengan hasil query sebelumnya. Tujuannya adalah kita hanya mencocokkan baris yang mempunyai nama klub dan jumlah gol yang sama.
SELECT ts1.* FROM top_scores AS ts1INNER JOIN (
SELECT club, MAX(goals) AS max_goals FROM top_scores
GROUP BY club
) AS ts2 ON ts2.club=ts1.club AND ts1.goals=ts2.max_goals
ORDER BY ts1.goals DESC;
Hasil dari query diatas harusnya telah sama dengan yang diharapkan.
+----+-----------------+-------------------+-----------+-------+| id | player | club | season | goals |
+----+-----------------+-------------------+-----------+-------+
| 4 | Harry Kane | Tottenham Hotspur | 2015-2016 | 25 |
| 9 | Jamie Vardy | Leicester City | 2015-2016 | 24 |
| 3 | Romelu Lukaku | Everton | 2015-2016 | 18 |
| 5 | Oliver Giroud | Arsenal | 2015-2016 | 16 |
| 10 | Odion Ighalo | Watford | 2015-2016 | 15 |
| 11 | André Ayew | Swansea City | 2015-2016 | 12 |
| 12 | Diego Costa | Chelsea | 2015-2016 | 12 |
| 6 | Anthony Martial | Manchester United | 2015-2016 | 11 |
+----+-----------------+-------------------+-----------+-------+
8 rows in set (0.00 sec)
Bagaimana jika ada dua atau lebih pemain dari klub yang sama memiliki jumlah gol yang sama juga? Jawabannya pemain-pemain tersebut akan ditampilkan. Untuk membatasinya hanya pada Top-N akan kita bahas pada artikel yang lain.
Clone Contoh Group-wise MaximumUntuk mempermudah pemahaman dan eksperimen tentang masalah Group-wise Maximum ini silahkan clone contoh yang telah saya sediakan di github.com/rioastamal-examples/solution-mysql-groupwise-maximum. Pada repository tersebut terdapat contoh skema dan query yang digunakan pada artikel ini.