Sử dụng biểu thức SUM(condition) * 100 / COUNT(*) để tính phần trăm hàng thỏa mãn điều kiện.
Tạo bảng và dữ liệu ngày sinh (dạng chuỗi)
mysql> CREATE TABLE DemoTable (
-> DateOfBirth VARCHAR(100)
-> );
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('2019/01/31'), ('1980/02/01'), ('1985/04/10'), ('1995/06/04'), ('1990/12/24'), ('1996/11/04');
Query OK, 6 rows affected (0.19 sec)
Truy vấn tính phần trăm
mysql> SELECT SUM(DateOfBirth BETWEEN '1980/01/01' AND '1996/12/31') * 100 / COUNT(*) AS Percentage FROM DemoTable;
Kết quả:
+------------+ | Percentage | +------------+ | 83.3333 | +------------+ 1 row in set (0.00 sec)
Giải thích:
DateOfBirth BETWEEN ...trả về 1 (true) hoặc 0 (false)SUM(...)đếm số hàng true = 5COUNT(*)= 6 tổng số hàng5 * 100 / 6 = 83.33%
Lưu ý: So sánh chuỗi ngày tháng chỉ đúng nếu định dạng cố định (YYYY/MM/DD). Nên lưu kiểu DATE.