Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sử dụng COUNT với điều kiện CASE WHEN trong MySQL

Tạo bảng điểm

mysql> CREATE TABLE DemoTable1374 (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20),
    -> Score INT
    -> );
Query OK, 0 rows affected (0.61 sec)
mysql> INSERT INTO DemoTable1374(Name, Score) VALUES
    -> ('Chris',45),('David',78),('Bob',45),('Mike',75),('Carol',45),('Adam',89);

Dữ liệu

mysql> SELECT * FROM DemoTable1374;
+----+-------+-------+
| Id | Name  | Score |
+----+-------+-------+
| 1  | Chris | 45    |
| 2  | David | 78    |
| 3  | Bob   | 45    |
| 4  | Mike  | 75    |
| 5  | Carol | 45    |
| 6  | Adam  | 89    |
+----+-------+-------+

Đếm số hàng có Score = 45

mysql> SELECT COUNT(CASE WHEN Score = 45 THEN 1 ELSE NULL END)
    -> AS SpecificCondition
    -> FROM DemoTable1374;

Kết quả: 3

+-------------------+
| SpecificCondition |
+-------------------+
| 3                 |
+-------------------+

Giải thích: COUNT(expr) chỉ đếm các hàng expr không phải NULL. CASE WHEN ... THEN 1 ELSE NULL END trả về 1 khi thỏa mãn, NULL khi không, do đó COUNT chỉ tính các hàng khớp. Tương đương SUM(Score = 45) trong MySQL (true = 1, false = 0).