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

Cara Mendapatkan Rekam dengan Nilai Maks di MySQL

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!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Menginstal MySQL Workbench Di Windows

  2. Bagaimana menghubungkan ke Sumber Data MySQL di Visual Studio

  3. Perbedaan antara INDEX, PRIMARY, UNIQUE, FULLTEXT di MySQL?

  4. Memeriksa beberapa kolom untuk satu nilai

  5. kueri pemilihan mysql dalam array serial