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

Cách thực hiện GROUP BY theo khoảng (range) trong MySQL

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