Sql 宽度\u铲斗不返回相同宽度的铲斗
我正在使用Postgres版本9.6.9,并尝试使用width_bucket()生成一个直方图,其中bucket的宽度相等。然而,我使用的查询并没有返回宽度相等的桶 正如您在下面的示例中所看到的,bucket中的值具有不同的宽度。e、 g.铲斗1的最小值为7,最大值为18-宽度为11。铲斗3的最小值为52,最大值为55,宽度为3 如何调整查询以确保每个桶的宽度相同 以下是数据的样子:Sql 宽度\u铲斗不返回相同宽度的铲斗,sql,postgresql,histogram,Sql,Postgresql,Histogram,我正在使用Postgres版本9.6.9,并尝试使用width_bucket()生成一个直方图,其中bucket的宽度相等。然而,我使用的查询并没有返回宽度相等的桶 正如您在下面的示例中所看到的,bucket中的值具有不同的宽度。e、 g.铲斗1的最小值为7,最大值为18-宽度为11。铲斗3的最小值为52,最大值为55,宽度为3 如何调整查询以确保每个桶的宽度相同 以下是数据的样子: value ------- 7 7 15 17 18 22 23 25 29 42 52 52 55 60
value
-------
7
7
15
17
18
22
23
25
29
42
52
52
55
60
74
85
90
90
92
95
(20排)
以下是查询和结果直方图:
WITH min_max AS (
SELECT
min(value) AS min_val,
max(value) AS max_val
FROM table
)
SELECT
min(value),
max(value),
count(*),
width_bucket(value, min_val, max_val, 5) AS bucket
FROM table, min_max
GROUP BY bucket
ORDER BY bucket;
min | max | count | bucket
-----+-----+-------+--------
7 | 23 | 7 | 1
25 | 42 | 3 | 2
52 | 55 | 3 | 3
60 | 74 | 2 | 4
85 | 92 | 4 | 5
95 | 95 | 1 | 6
( 6 rows )
你的水桶大小一样。您只是没有准确表示终点的数据 例如,24是在第一个桶中还是在第二个桶中?这对于没有任何数据的范围更为显著,例如75-83。 Bucket参数指定要在min到max定义的范围内创建的Bucket数。min包含在内,而max不包含在内 最大值不包括在内。这么定
WIDTH_BUCKET( expression, min, max + 1, buckets)
WIDTH_BUCKET( expression, min, max + 1, buckets)