首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MYSQL -如何根据范围对数据进行分组并对其进行计数

MYSQL -如何根据范围对数据进行分组并对其进行计数
EN

Stack Overflow用户
提问于 2017-09-27 12:12:55
回答 2查看 921关注 0票数 0

我正在寻找一种将MYSql数据分组为存储桶(值范围)的方法,然后计算每个组中有多少个值,然后将其绘制到一个图上。

我有很多的范围,不是很少像这里,我会做手动。

例如,如果我的数据看起来是:

代码语言:javascript
复制
+--------+
| column |
+--------+
|      1 |
|      2 |
|     10 |
|     15 |
|     20 |
|    100 |
|    150 |
|   1000 |
|  10000 |
+--------+

我可以创建桶并计算每个桶中的值数:

代码语言:javascript
复制
+-------------+---------------+-----------------+-----------------+
| bucket(0-9) | bucket(10-99) | bucket(100-999) | bucket(1000-1M) |
+-------------+---------------+-----------------+-----------------+
|           2 |             3 |               2 |               2 |
+-------------+---------------+-----------------+-----------------+
  • 计数(0-9) => 2值
  • 计数(10-99) => 3值
  • 计数(100-999) => 2值
  • 计数(1000-1M) => 2值
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-27 12:21:59

如果上限小于1M,也许您可以根据您的样本数据和期望的结果尝试count(case when ... then .. end)

代码语言:javascript
复制
select
    count(case when col between 0 and 9 then 1 end) `bucket(0-9)`,
    count(case when col between 10 and 99 then 1 end) `bucket(10-99)`,
    count(case when col between 100 and 999 then 1 end) `bucket(100-999)`,
    count(case when col between 1000 and 1000000 then 1 end) `bucket(1000-1M)`
from test

检查演示 in SQLFiddle。

票数 2
EN

Stack Overflow用户

发布于 2017-09-27 12:35:00

这是另一个玩法..。

代码语言:javascript
复制
DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table (i INT NOT NULL PRIMARY KEY);

INSERT INTO my_table VALUES
(1),
(2),
(10),
(15),
(20),
(100),
(150),
(1000),
(10000);

SELECT LENGTH(i) bucket
     , CONCAT(RPAD(1,LENGTH(i),0),'-',RPAD(9,LENGTH(i),9)) range
     , COUNT(*) total 
  FROM my_table 
 GROUP 
    BY bucket;
+--------+-------------+-------+
| bucket | range       | total |
+--------+-------------+-------+
|      1 | 1-9         |     2 |
|      2 | 10-99       |     3 |
|      3 | 100-999     |     2 |
|      4 | 1000-9999   |     1 |
|      5 | 10000-99999 |     1 |
+--------+-------------+-------+
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46447587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档