width_bucket()
是一个系统函数,它根据给定的直方图或数组,返回提供操作数所属存储桶的编号。
width_bucket()
在 PostgreSQL 8.0 中添加。
用法
width_bucket()
具有两种变体,一种作用于直方图,另一种作用于数组。
直方图
width_bucket (operand
numeric
,low
numeric
,high
numeric
,count
integer
)
→integer
width_bucket (operand
double precision
,low
double precision
,high
double precision
,count
integer
)
→integer
如果提供的 operand
超出直方图的下限或上限,则将返回 0
或 count
+ 1
。
数组
width_bucket (operand
anycompatible
,thresholds
anycompatiblearray
)
→integer
提供的数组必须按从小到大的顺序排序,否则可能会返回不正确的结果。
如果提供的 operand
超出数组的下限或上限,则将返回 0
或 array_length()
+ 1
。
修改历史
- PostgreSQL 9.5
- PostgreSQL 8.3
- 添加了
double precision
变体(提交 cf57ef4e)
- 添加了
- PostgreSQL 8.0
- 添加(提交 0079547b)
示例
使用直方图的 width_bucket()
基本用法示例
postgres=# SELECT width_bucket(13, 11, 15, 5); width_bucket -------------- 3 (1 row)
在此示例中,直方图范围在 11
和 15
之间,有 5
个存储桶。相应地,提供的 operand
3
位于第三个存储桶。
使用非整数值的示例
postgres=# SELECT width_bucket(0.3, 0.1, 1.1, 5); width_bucket -------------- 2 (1 row)
如果提供的 operand
小于直方图的下限,则返回 0
postgres=# SELECT width_bucket(2, 11, 15, 5); width_bucket -------------- 0 (1 row)
如果提供的 operand
高于直方图的上限,则返回 count
+ 1
postgres=# SELECT width_bucket(22, 11, 15, 5); width_bucket -------------- 6 (1 row)
使用数组的 width_bucket()
基本用法示例
postgres=# SELECT width_bucket(2, ARRAY[1, 2, 3]); width_bucket -------------- 2 (1 row)
参考文献
- PostgreSQL 文档: 数学函数