Để nhóm dữ liệu theo khoảng giá trị (range) trong MySQL, có thể dùng phép chia và làm tròn.
Tạo bảng:
mysql> CREATE TABLE GroupByRangeDemo (
-> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> YourRangeValue INT
-> );
Chèn dữ liệu:
mysql> INSERT INTO GroupByRangeDemo(YourRangeValue) VALUES(1), (7), (9), (23), (33), (35), (1017);
Hiển thị dữ liệu:
+----+----------------+ | Id | YourRangeValue | +----+----------------+ | 1 | 1 | | 2 | 7 | | 3 | 9 | | 4 | 23 | | 5 | 33 | | 6 | 35 | | 7 | 1017 | +----+----------------+
Truy vấn nhóm theo khoảng 10 (0-9, 10-19, ...) và gom các giá trị ≥ 40 vào nhóm "40+":
mysql> SELECT ROUND(YourRangeValue / 10), COUNT(YourRangeValue)
-> FROM GroupByRangeDemo WHERE YourRangeValue < 40
-> GROUP BY ROUND(YourRangeValue / 10)
-> UNION
-> SELECT '40+', COUNT(YourRangeValue) FROM GroupByRangeDemo WHERE YourRangeValue >= 40;
Kết quả:
+----------------------------+-----------------------+ | round(YourRangeValue / 10) | count(YourRangeValue) | +----------------------------+-----------------------+ | 0 | 1 | | 1 | 2 | | 2 | 1 | | 3 | 1 | | 4 | 1 | | 40+ | 1 | +----------------------------+-----------------------+