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

Cara Mendapatkan Banyak Hitungan Dengan Satu Permintaan di MySQL

Terkadang Anda mungkin perlu memilih beberapa penghitungan dalam satu kueri, mendapatkan beberapa penghitungan untuk kondisi berbeda, atau memilih beberapa penghitungan dengan kriteria berbeda. Pada artikel ini, kita akan melihat cara mendapatkan banyak hitungan dengan satu kueri di MySQL.


Cara Mendapatkan Banyak Hitungan Dengan Satu Query di 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 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',1,null)) as B_count
        from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       2 |
+-------------+---------+---------+

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

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' then 1 else null end) as B_count
 from product_sales;
+-------------+---------+---------+
| total_count | A_count | B_count |
+-------------+---------+---------+
|           4 |       2 |       2 |
+-------------+---------+---------+

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. Bagaimana Anda menghapus MySQL dari Mac OS X?

  2. DO dan DONT untuk Indeks

  3. Buat Situs Web dengan MySQL

  4. memilih nilai unik dari kolom

  5. Dapatkan baris terbaru untuk ID yang diberikan