Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhiều số lượng với các điều kiện khác nhau trong một truy vấn MySQL

Bạn có thể dễ dàng nhận được nhiều số với các điều kiện hoặc tiêu chí khác nhau trong một truy vấn duy nhất trong MySQL, sử dụng câu lệnh IF hoặc CASE. Trong bài viết này, chúng ta sẽ xem xét cách lấy nhiều số với nhiều điều kiện trong MySQL.


Nhiều số lượng với các điều kiện khác nhau trong một truy vấn MySQL

Dưới đây là các bước để nhận được nhiều lần đếm với các điều kiện khác nhau trong một truy vấn MySQL.

Giả sử bạn có bảng sau product_sales (id, product, order_date, amount)

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 |
+------+---------+------------+--------+

Giả sử bạn muốn tổng số, tổng số đơn đặt hàng sản phẩm A và số đơn đặt hàng sản phẩm B có số lượng> 200 trong một truy vấn.

Đây là truy vấn SQL để thực hiện điều trên.

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 |
+-------------+---------+---------+

Hãy để chúng tôi xem xét chi tiết truy vấn trên.

số lượng (*) đếm tất cả các hàng trong bảng để đưa ra tổng số.

count (if (product =’A’, 1, null)) là A_count - khi chúng ta sử dụng điều kiện IF bên trong hàm đếm, nó sẽ chỉ đếm các hàng có điều kiện là đúng. Điều kiện của chúng tôi là đối sánh các hàng có product =A. Vì vậy, MySQL, chỉ tính những hàng có product là A. Nếu không, nó không được tính (được gán là NULL).

Xin lưu ý, điều quan trọng là sử dụng null trong trường hợp điều kiện IF không thành công thì thậm chí các hàng không khớp cũng được tính.

Tương tự, chúng tôi tính số lượng cho các hàng có product =B và số lượng> 200.

Bạn cũng có thể nhận được kết quả trên bằng cách sử dụng câu lệnh CASE như được hiển thị bên dưới.

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 |
+-------------+---------+---------+

Phần thưởng đọc:Cách sử dụng COALESCE trong MySQL


Nhận nhiều số lượng trong Ubiq

Công cụ Báo cáo Ubiq hỗ trợ tất cả các truy vấn SQL ở trên và giúp bạn dễ dàng hình dung kết quả SQL theo những cách khác nhau. Nó cũng cho phép bạn tạo trang tổng quan và biểu đồ từ dữ liệu MySQL. Đây là truy vấn SQL được đề cập ở trên, trong Ubiq.

Cần một công cụ báo cáo cho MySQL? Ubiq giúp dễ dàng trực quan hóa dữ liệu trong vài phút và theo dõi trong trang tổng quan thời gian thực. Thử nó ngay hôm nay!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tạo MySQL máy chủ liên kết

  2. Cân bằng tải cơ sở dữ liệu-Aware:Cách chuyển từ HAProxy sang ProxySQL

  3. Cách kiểm tra xem một bảng đã tồn tại chưa trước khi tạo nó trong MySQL

  4. Thứ tự MySQL trước khi Nhóm theo

  5. Thứ tự MySQL theo kết quả phù hợp nhất