Sử dụng COUNT(điều_kiện OR NULL) cho từng cột rồi cộng dồn để đếm số giá trị > 0 trên một hàng.
Ví dụ
Tạo bảng 4 cột số:
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstValue int,
SecondValue int,
ThirdValue int,
FourthValue int
);
Query OK, 0 rows affected (0.59 sec)mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(-18,45,0,155); mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(0,235,null,15);
Dữ liệu:
+----+------------+-------------+------------+-------------+ | Id | FirstValue | SecondValue | ThirdValue | FourthValue | +----+------------+-------------+------------+-------------+ | 1 | -18 | 45 | 0 | 155 | | 2 | 0 | 235 | NULL | 15 | +----+------------+-------------+------------+-------------+
Đếm giá trị > 0 trên mỗi hàng
mysql> SELECT
COUNT(FirstValue > 0 OR NULL) +
COUNT(SecondValue > 0 OR NULL) +
COUNT(ThirdValue > 0 OR NULL) +
COUNT(FourthValue > 0 OR NULL)
AS TOTAL_VALUE FROM DemoTable;+-------------+ | TOTAL_VALUE | +-------------+ | 4 | +-------------+
Giải thích: Hàng 1: 45, 155 (2 giá trị >0). Hàng 2: 235, 15 (2 giá trị >0). Tổng = 4.
Cơ chế: Biểu thức FirstValue > 0 trả về 1 (true) hoặc 0 (false). OR NULL chuyển false thành NULL. COUNT() chỉ đếm giá trị non-NULL.