mysql 按区间分组
时间: 2023-06-28 16:10:58 浏览: 136
MYSQL表分区
可以使用 MySQL 的 CASE WHEN 和 GROUP BY 语句实现按区间分组。假设有一个表,其中包含一个整数列 `value`,现在要按照值的区间分组,可以按照以下步骤操作:
1. 使用 CASE WHEN 语句将 `value` 列的值转换为对应的区间标记,并将其存储在一个新的列 `group_value` 中。例如,将值小于 10 的行标记为 '0-9',将值在 10 到 19 之间的行标记为 '10-19',以此类推。
```
SELECT
value,
CASE
WHEN value < 10 THEN '0-9'
WHEN value >= 10 AND value < 20 THEN '10-19'
WHEN value >= 20 AND value < 30 THEN '20-29'
ELSE '30+'
END AS group_value
FROM
my_table;
```
2. 将上述查询结果作为子查询,在外部查询中使用 GROUP BY 语句按照 `group_value` 列进行分组,并使用聚合函数(如 COUNT、AVG、SUM 等)计算每个分组的统计值。
```
SELECT
group_value,
COUNT(*) AS count,
AVG(value) AS avg_value
FROM (
SELECT
value,
CASE
WHEN value < 10 THEN '0-9'
WHEN value >= 10 AND value < 20 THEN '10-19'
WHEN value >= 20 AND value < 30 THEN '20-29'
ELSE '30+'
END AS group_value
FROM
my_table
) subquery
GROUP BY
group_value;
```
以上示例中,将整数值按照 0-9、10-19、20-29 和 30+ 四个区间进行分组,并计算了每个分组的行数和平均值。可以根据具体需求修改区间范围和分组方式。
阅读全文