Sering kali Anda mungkin perlu memilih baris dengan nilai kolom maksimal dalam SQL. Karena tidak ada fungsi bawaan untuk itu, Anda perlu mendapatkan catatan dengan nilai maksimal menggunakan kueri SQL. Berikut cara mendapatkan record dengan nilai maksimal di MySQL. Anda juga dapat menggunakannya untuk mendapatkan baris dengan nilai maksimal di PostgreSQL, SQL Server.
Cara Mendapatkan Rekam dengan Nilai Maks di MySQL
Berikut adalah langkah-langkah untuk mendapatkan record dengan nilai maksimal di MySQL.
Katakanlah Anda memiliki tabel berikut penjualan(tanggal_pesanan,penjualan) yang berisi data penjualan harian.
mysql> create table sales(order_date date,sale int, orders int); mysql> insert into sales(order_date,sale,orders) values('2020-05-29', 300, 10), ('2020-05-30',250, 15),( '2020-05-31', 250, 12),( '2020-06-01',250, 14), ('2020-06-02',150,20),('2020-06-03',300,21),('2020-06-04',200,15), ('2020-06-05',200,17),('2020-06-06',250,12),('2020-06-07',150,15), ('2020-06-08',300,12),('2020-06-09',200,18); mysql> select * from sales; +------------+------+--------+ | order_date | sale | orders | +------------+------+--------+ | 2020-05-29 | 300 | 10 | | 2020-05-30 | 250 | 15 | | 2020-05-31 | 250 | 12 | | 2020-06-01 | 250 | 14 | | 2020-06-02 | 150 | 20 | | 2020-06-03 | 300 | 21 | | 2020-06-04 | 200 | 15 | | 2020-06-05 | 200 | 17 | | 2020-06-06 | 250 | 12 | | 2020-06-07 | 150 | 15 | | 2020-06-08 | 300 | 12 | | 2020-06-09 | 200 | 18 | +------------+------+--------+
Ada dua cara untuk memilih baris dengan nilai kolom maksimal di SQL. Kami akan melihat keduanya.
Bonus Baca :Cara Mendapatkan Data 12 Bulan Terakhir di MySQL
Cara mendapatkan record dengan nilai maksimal menggunakan subquery SQL
Berikut kueri SQL untuk mendapatkan baris dengan penjualan maks. nilai menggunakan subquery SQL.
mysql> select * from sales where sale=(select max(sale) from sales); +------------+------+--------+ | order_date | sale | orders | +------------+------+--------+ | 2020-05-29 | 300 | 10 | | 2020-06-03 | 300 | 21 | | 2020-06-08 | 300 | 12 | +------------+------+--------+
Dalam kueri di atas, pertama-tama kita pilih nilai maksimum untuk tabel di subkueri (dalam tebal ). Kemudian kami memilih baris tersebut dari tabel penjualan asli di mana nilai kolom penjualan adalah nilai maksimal. Untuk tabel besar, Anda dapat meningkatkan kinerja kueri dengan mengindeks penjualan kolom.
Jika Anda ingin memfilter data sesuai dengan kondisi tertentu, tambahkan klausa WHERE di subkueri Anda seperti yang ditunjukkan di bawah ini.
mysql> select * from sales where sale=( select max(sale) from sales WHERE <condition> );
Bonus Baca :Cara Update View di MySQL
Cara mendapatkan catatan dengan nilai maksimal untuk setiap GROUP
Berikut adalah langkah-langkah untuk mendapatkan baris dengan nilai maksimal menggunakan GROUP BY di MySQL.
Katakanlah Anda memiliki tabel produk_penjualan(produk, tanggal_pesanan,obral) yang berisi data penjualan untuk beberapa produk. Dan Anda ingin mendapatkan catatan dengan nilai penjualan maksimal untuk setiap produk.
mysql> create table product_sales(product varchar(255),order_date date, sale int); mysql> insert into product_sales(product,order_date, sale) values('A','2020-05-01',250), ('B','2020-05-01',350), ('C','2020-05-01',1250), ('A','2020-05-02',450), ('B','2020-05-02',650), ('C','2020-05-02',1050), ('A','2020-05-03',150), ('B','2020-05-03',250), ('C','2020-05-03',1850); mysql> select * from product_sales; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-05-01 | 250 | | B | 2020-05-01 | 350 | | C | 2020-05-01 | 1250 | | A | 2020-05-02 | 450 | | B | 2020-05-02 | 650 | | C | 2020-05-02 | 1050 | | A | 2020-05-03 | 150 | | B | 2020-05-03 | 250 | | C | 2020-05-03 | 1850 | +---------+------------+------+
Bonus Baca :Cara Mendapatkan Total Pengguna Kumulatif Per Hari di MySQL
Berikut query SQL untuk mendapatkan record dengan nilai maksimal menggunakan GROUP BY, untuk setiap grup, yaitu setiap produk.
mysql> select product_sales.* from product_sales, (select product,max(sale) as sale from product_sales group by product) max_sales where product_sales.product=max_sales.product and product_sales.sale=max_sales.sale; +---------+------------+------+ | product | order_date | sale | +---------+------------+------+ | A | 2020-05-02 | 450 | | B | 2020-05-02 | 650 | | C | 2020-05-03 | 1850 | +---------+------------+------+
Dalam kueri di atas, pertama-tama kita menghitung nilai penjualan maksimal untuk setiap produk menggunakan subkueri bertingkat (dalam tebal ), lalu gabungkan hasilnya dengan produk_penjualan asli tabel berdasarkan kolom produk dan penjualan.
Mudah-mudahan, Anda bisa mendapatkan baris dengan nilai kolom maksimal untuk tabel Anda.
Ubiq memudahkan untuk memvisualisasikan data dalam hitungan menit, dan memantau di dasbor waktu nyata. Cobalah Hari ini!