(Max-Min)/100,分成100份,统计每份有多少条记录,比如最大值1000,最小值100,那每份为900/100=9,从100-109有多少条记录,从109-118有多少条记录 sql如何写
时间: 2024-03-09 17:50:03 浏览: 35
可以使用 Oracle 中的 WIDTH_BUCKET 函数来实现按照一定范围统计记录数的功能。该函数可以将一个数值分成指定的若干个区间,并返回该数值在哪个区间中。
假设要将 [min, max] 这个区间分成 100 个等宽的子区间,可以使用以下 SQL 语句:
```
SELECT WIDTH_BUCKET(column_name, min_value, max_value, 100) AS bucket,
COUNT(*) AS count
FROM table_name
GROUP BY WIDTH_BUCKET(column_name, min_value, max_value, 100)
ORDER BY bucket;
```
其中,column_name 是要统计的数值列,min_value 和 max_value 分别是该列中的最小值和最大值,100 是要分成的子区间数量。WIDTH_BUCKET 函数的返回值是一个整数,表示该数值所在的区间编号。COUNT(*) 统计每个区间中的记录数。
对于题目中的例子,可以将 min_value 设为 100,max_value 设为 1000,然后按照上述方法进行统计。例如,要统计 100-109 这个区间中的记录数,可以使用以下 SQL 语句:
```
SELECT COUNT(*) AS count
FROM table_name
WHERE WIDTH_BUCKET(column_name, 100, 1000, 100) = 1;
```
其中,WIDTH_BUCKET 函数的返回值为 1 表示数值在 100-109 这个子区间中。统计其他区间的记录数时,只需要将 WHERE 子句中的区间编号相应改为对应的值即可。
阅读全文