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
如果提供的操作数
超出直方图的下限或上限,则将返回0
或count
+ 1
。
数组
width_bucket (operand
anycompatible
,thresholds
anycompatiblearray
)
→integer
提供的数组必须按从小到大的顺序排序,否则可能会返回不正确的结果。
如果提供的操作数
超出数组的下限或上限,则将返回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
个存储桶。相应地,提供的操作数
3
位于第三个存储桶中。
使用非整数值的示例
postgres=# SELECT width_bucket(0.3, 0.1, 1.1, 5); width_bucket -------------- 2 (1 row)
如果提供的操作数
小于直方图的下限,则返回0
postgres=# SELECT width_bucket(2, 11, 15, 5); width_bucket -------------- 0 (1 row)
如果提供的操作数
大于直方图的上限,则返回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 文档: 数学函数