Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để triển khai GROUP theo phạm vi trong MySQL?

Để nhóm theo phạm vi trong MySQL, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau

mysql> create table GroupByRangeDemo
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > YourRangeValue int
   - > );
Query OK, 0 rows affected (0.78 sec)

Bây giờ bạn có thể chèn một số bản ghi trong bảng bằng lệnh insert.

Truy vấn như sau

mysql> insert into GroupByRangeDemo(YourRangeValue) values(1);
Query OK, 1 row affected (0.14 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(7);
Query OK, 1 row affected (0.15 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(9);
Query OK, 1 row affected (0.14 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(23);
Query OK, 1 row affected (0.13 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(33);
Query OK, 1 row affected (0.15 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(35);
Query OK, 1 row affected (0.16 sec)
mysql> insert into GroupByRangeDemo(YourRangeValue) values(1017);
Query OK, 1 row affected (0.11 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.

Truy vấn như sau

mysql> select *from GroupByRangeDemo;

Sau đây là kết quả

+----+----------------+
| Id | YourRangeValue |
+----+----------------+
|  1 |              1 |
|  2 |              7 |
|  3 |              9 |
|  4 |             23 |
|  5 |             33 |
|  6 |             35 |
|  7 |           1017 |
+----+----------------+
7 rows in set (0.04 sec)

Đây là truy vấn để nhóm theo phạm vi

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;

Sau đây là kết quả

+----------------------------+-----------------------+
| round(YourRangeValue / 10) | count(YourRangeValue) |
+----------------------------+-----------------------+
| 0                          |                     1 |
| 1                          |                     2 |
| 2                          |                     1 |
| 3                          |                     1 |
| 4                          |                     1 |
| 40+                        |                     1 |
+----------------------------+-----------------------+
6 rows in set (0.08 sec)