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

Cara Mendapatkan Catatan Pertama di Setiap Grup di MySQL

Terkadang Anda mungkin perlu mendapatkan baris pertama di setiap grup atau baris minimum per grup. Berikut cara mendapatkan record pertama di setiap grup di MySQL. Anda juga dapat menggunakan kueri SQL ini untuk mendapatkan 1 baris teratas di setiap grup di MySQL, PostgreSQL, SQL Server &Oracle. Anda dapat menggunakannya untuk memilih 1 baris teratas untuk setiap grup.

Cara Mendapatkan Catatan Pertama di Setiap Grup di MySQL

Berikut adalah langkah-langkah untuk mendapatkan record pertama di setiap grup di MySQL.

Katakanlah Anda memiliki tabel produk_penjualan(produk, tanggal_pesanan,obral) yang berisi data penjualan untuk beberapa 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 Record dengan Max Value di MySQL

Katakanlah Anda ingin mendapatkan rekor pertama di setiap grup, yaitu untuk setiap produk. Pertama kita menggunakan GROUP BY untuk mendapatkan kencan pertama untuk setiap grup.

mysql> select product,min(order_date) from product_sales group by product;
+---------+-----------------+
| product | max(order_date) |
+---------+-----------------+
| A       | 2020-05-01      |
| B       | 2020-05-01      |
| C       | 2020-05-01      |
+---------+-----------------+

Sekarang setelah kita mengetahui tanggal pertama untuk setiap grup, kita gabungkan hasil ini dengan tabel asli kita untuk mendapatkan catatan pertama berdasarkan grup tanggal.

mysql> select product_sales.* from product_sales,
           (select product,min(order_date) as order_date
                from product_sales
                group by product) max_sales
             where product_sales.product=max_sales.product
             and product_sales.order_date=max_sales.order_date;
+---------+------------+------+
| product | order_date | sale |
+---------+------------+------+
| A       | 2020-05-03 |  250 |
| B       | 2020-05-03 |  350 |
| C       | 2020-05-03 | 1250 |
+---------+------------+------+

Jika Anda ingin mendapatkan catatan terakhir atau terbaru untuk setiap grup, gunakan fungsi MAX daripada MIN di atas.

Bonus Baca :Cara Mendapatkan Rekor Terakhir di Setiap Grup

Cara Memilih Catatan Terbaru untuk Setiap Pengguna

Demikian pula, Anda dapat memilih catatan pertama untuk setiap pengguna atau mendapatkan catatan terlama untuk setiap id. Katakanlah Anda memiliki tabel berikut user_data(user_id,transaction_date,sale) dengan data transaksi pengguna

mysql> create table user_data(user_id int, transaction_date date, sale int);

mysql> insert into user_data(user_id,transaction_date, sale)
          values('1','2020-05-01',25),
          ('2','2020-05-01',35),
          ('3','2020-05-01',125),
          ('1','2020-05-02',40),
          ('2','2020-05-02',50),
          ('3','2020-05-02',50),
          ('1','2020-05-03',15),
          ('2','2020-05-03',25),
          ('3','2020-05-03',50);


mysql> select * from user_data;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
|       1 | 2020-05-01       |   25 |
|       2 | 2020-05-01       |   35 |
|       3 | 2020-05-01       |  125 |
|       1 | 2020-05-02       |   40 |
|       2 | 2020-05-02       |   50 |
|       3 | 2020-05-02       |   50 |
|       1 | 2020-05-03       |   15 |
|       2 | 2020-05-03       |   25 |
|       3 | 2020-05-03       |   50 |
+---------+------------------+------+

Bonus Baca :Cara Mendapatkan Rekor 15 Hari Terakhir di MySQL

Pertama, kita mendapatkan tanggal pertama untuk setiap id pengguna menggunakan GROUP BY.

mysql> select user_id,min(transaction_date) from user_data group by user_id;
+---------+-----------------------+
| user_id | min(transaction_date) |
+---------+-----------------------+
|       1 | 2020-05-01            |
|       2 | 2020-05-01            |
|       3 | 2020-05-01            |
+---------+-----------------------+

Sekarang setelah kita mengetahui tanggal terlama untuk setiap id pengguna, kita menggabungkan hasil ini dengan tabel asli kita untuk mendapatkan catatan pertama berdasarkan grup pengguna.

mysql> select user_data.* from user_data,
                (select user_id,min(transaction_date) as transaction_date
                     from user_data
                     group by user_id) max_user
                  where user_data.user_id=max_user.user_id
                  and user_data.transaction_date=max_user.transaction_date;
+---------+------------------+------+
| user_id | transaction_date | sale |
+---------+------------------+------+
|       1 | 2020-05-01       |   25 |
|       2 | 2020-05-01       |   35 |
|       3 | 2020-05-01       |  125 |
+---------+------------------+------+

Mudah-mudahan, Anda bisa mendapatkan catatan pertama di setiap grup di MySQL.

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 Melihat Koneksi Saat Ini di MySQL Workbench menggunakan GUI

  2. Cara memberikan akses jarak jauh ke satu database MySQL

  3. Menggabungkan operasi UNION dan LIMIT dalam kueri MySQL

  4. Mengamankan Instalasi MySQL Anda

  5. MySQL Pilih Baris N Teratas