WIDTH_BUCKET

构建等宽直方图,其中直方图的范围被分为相同大小的区间(存储桶)。此外,低存储桶以下的值返回 0,高存储桶以上的值返回 bucket_count +1。返回整数值。

行为类型

不可变

语法

WIDTH_BUCKET ( expression, hist_min, hist_max, bucket_count )

参数

expression
为其创建直方图的表达式。此表达式必须评估为 numeric 或 datetime 值,或可隐式转换为 numeric 或 datetime 值。如果 expression 求值结果为 NULL,则 expression 返回 NULL。
hist_min
一个表达式,解析为存储桶 1 的下限。必须也评估为 numeric 或 datetime 值,不能评估为 null。
hist_max
一个表达式,解析为存储桶 bucket_count 上限。必须也评估为 numeric 或 datetime 值,不能评估为 null。
bucket_count
一个表达式,解析为常数,代表存储桶的数量。此表达式始终评估为正数 INTEGER。

注意

  • WIDTH_BUCKET 将数据集分成多个等宽的存储桶。例如,Age = 0–20, 20–40, 40–60, 60–80。这称为等宽直方图。

  • 使用 WIDTH_BUCKET 时,请注意最小和最大边界值。每个存储桶包含等于或大于该存储桶基准数的值,所以年龄范围 0–20、20–40 等等实际上是 0–19.99 和 20–39.999。

  • WIDTH_BUCKET 接受以下数据类型:(FLOAT 和/或 INTEGER)、(TIMESTAMP 和/或 DATE 和/或 TIMESTAMPTZ)或 (INTERVAL和/或 TIME)。

示例

下述示例返回五个可能值,有三个存储桶:0 [100以下)、1 [100–300)、2 [300–500)、3 [500–700) 和 4 [700 及以上):

SELECT product_description, product_cost, WIDTH_BUCKET(product_cost, 100, 700, 3);

下述示例针对康涅狄格州的女医生顾客,在 annual_income 列上创建包含九个存储桶的直方图。结果将存储桶编号返回到“Income”列,共分为 11 个存储桶,其中包括下溢桶和溢出桶。请注意,如果顾客的年收入高于最大值,则分配到溢出桶 10:

SELECT customer_name, annual_income, WIDTH_BUCKET (annual_income, 100000, 1000000, 9) AS "Income"
FROM public.customer_dimension WHERE customer_state='CT'
AND title='Dr.' AND customer_gender='Female' AND household_id < '1000'
ORDER BY "Income";

在下述结果集中,之所以有存储桶 0,是因为存储桶从 1 到 bucket_count 进行编号。任何低于 hist_min 给定值的,都进入存储桶 0;任何高于 hist_max 给定值的,都进入存储桶 bucket_count+1。在这个示例中,存储桶 9 是空的,没有溢出。值 12,283 小于 100,000,因此进入下溢桶。

   customer_name    | annual_income | Income
--------------------+---------------+--------
 Joanna A. Nguyen   |         12283 |      0
 Amy I. Nguyen      |        109806 |      1
 Juanita L. Taylor  |        219002 |      2
 Carla E. Brown     |        240872 |      2
 Kim U. Overstreet  |        284011 |      2
 Tiffany N. Reyes   |        323213 |      3
 Rebecca V. Martin  |        324493 |      3
 Betty . Roy        |        476055 |      4
 Midori B. Young    |        462587 |      4
 Martha T. Brown    |        687810 |      6
 Julie D. Miller    |        616509 |      6
 Julie Y. Nielson   |        894910 |      8
 Sarah B. Weaver    |        896260 |      8
 Jessica C. Nielson |        861066 |      8
(14 rows)

另请参阅