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

Banyak Hitungan dengan Kondisi Berbeda dalam satu permintaan MySQL

Anda dapat dengan mudah mendapatkan banyak hitungan dengan kondisi atau kriteria yang berbeda dalam satu kueri di MySQL, menggunakan pernyataan IF atau CASE. Pada artikel ini, kita akan melihat cara mendapatkan banyak hitungan dengan banyak kondisi di MySQL.


Beberapa Hitungan dengan Kondisi Berbeda dalam satu kueri MySQL

Berikut adalah langkah-langkah untuk mendapatkan banyak hitungan dengan kondisi berbeda dalam satu query MySQL.

Katakanlah Anda memiliki tabel berikut produk_penjualan(id, produk, tanggal_pesanan, jumlah)

mysql> create table product_sales(
     id int,
     product varchar(10),
     order_date date,
     amount int
     );

mysql> insert into product_sales(id, product, order_date, amount)
     values(1, 'A', '2021-01-01', 250),
     (2, 'B', '2021-01-02', 200),
     (3, 'A', '2021-01-03', 150),
     (4, 'B', '2021-01-04', 250);

mysql> select * from product_sales;
+------+---------+------------+--------+
| id   | product | order_date | amount |
+------+---------+------------+--------+
|    1 | A       | 2021-01-01 |    250 |
|    2 | B       | 2021-01-02 |    200 |
|    3 | A       | 2021-01-03 |    150 |
|    4 | B       | 2021-01-04 |    250 |
+------+---------+------------+--------+

Katakanlah Anda ingin jumlah total, jumlah pesanan produk A, dan jumlah pesanan produk B dengan jumlah> 200 dalam satu kueri.

Berikut adalah query SQL untuk mencapai hal di atas.

mysql> select count(*) as total_count,
        count(if(product='A',1,null)) as A_count,
        count(if(product='B' and amount>200,1,null)) as B_count
        from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

Mari kita lihat pertanyaan di atas secara detail.

hitung(*) menghitung semua baris dalam tabel untuk memberikan jumlah total.

hitung(if(produk='A',1,null)) sebagai A_count – ketika kita menggunakan kondisi IF di dalam fungsi hitung, itu hanya akan menghitung baris di mana kondisinya benar. Kondisi kami adalah untuk mencocokkan baris di mana produk =A. Jadi MySQL, hanya menghitung baris di mana produk adalah A. Jika tidak, tidak dihitung (ditetapkan sebagai NULL).

Harap dicatat, penting untuk menggunakan null jika kondisi JIKA gagal, bahkan baris yang tidak cocok akan dihitung.

Demikian pula, kami menghitung jumlah baris di mana product=B dan jumlah> 200.

Anda juga bisa mendapatkan hasil di atas menggunakan pernyataan CASE seperti yang ditunjukkan di bawah ini.

mysql> select count(*) as total_count,
 count(case when product='A' then 1 else null end) as A_count,
 count(case when product='B' and amount>200 then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       1 |
+-------------+---------+---------+

Bonus Baca :Cara Menggunakan COALESCE di MySQL


Dapatkan Banyak Hitungan di Ubiq

Alat Pelaporan Ubiq mendukung semua kueri SQL di atas dan memudahkan untuk memvisualisasikan hasil SQL dengan cara yang berbeda. Ini juga memungkinkan Anda membuat dasbor &bagan dari data MySQL. Berikut adalah kueri SQL yang disebutkan di atas, di Ubiq.

Butuh alat pelaporan untuk 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. MySQL di Docker - Cara Menampung Basis Data Anda :Buku Putih Baru

  2. Cara Menemukan Item Daftar pada Posisi Tertentu di MySQL

  3. Mendapatkan kembali akses ke kata sandi MySQL yang hilang untuk PHPMyAdmin di WAMP

  4. Kesalahan MySql 150 - Kunci asing

  5. MySQL MariaDB – Kueri Menggunakan Tabel Temp