PostgreSQL 9.5新特性 width_bucket求位置插值,可展示柱状图

本文涉及的产品
RDS PostgreSQL Serverless,0.5-4RCU 50GB 3个月
推荐场景:
对影评进行热评分析
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介:
PostgreSQL 9.5 新增的一个函数width_bucket , 用来计算一个值在一个bucket范围内的位置信息,如果这个值超出了给定的范围,返回0或者总bucket+1。bucket除了用数字来表示,还可以直接用数组来表示。
width_bucket(operand dp,b1 dp, b2 dp, count int) int return the bucket number to which operand would be assigned in a histogram having count equal-width buckets spanning the range b1 to b2; returns 0 or count+1 for an input outside the range width_bucket(5.35, 0.024, 10.06, 5) 3
width_bucket(operandnumeric, b1 numeric, b2numeric, count int) int return the bucket number to which operand would be assigned in a histogram having count equal-width buckets spanning the range b1 to b2; returns 0 or count+1 for an input outside the range width_bucket(5.35, 0.024, 10.06, 5) 3
width_bucket(operandanyelement, thresholdsanyarray) int return the bucket number to which operand would be assigned given an array listing the lower bounds of the buckets; returns 0 for an input less than the first lower bound; the thresholds arraymust be sorted, smallest first, or unexpected results will be obtained width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[]) 2
例子:
0.0, 5.0是边界,其中包含0.0,但是不包含5.0, 最后一个参数表示一共分为5个bucket。
超出边界:
 
  

postgres=# select width_bucket(-1, 0.0, 5.0, 5);
 width_bucket 
--------------
            0
(1 row)
postgres=# select width_bucket(5.0, 0.0, 5.0, 5);
 width_bucket 
--------------
            6
(1 row)
postgres=# select width_bucket(-0.0000001, 0.0, 5.0, 5);
 width_bucket 
--------------
            0
(1 row)
postgres=# select width_bucket(5.1, 0.0, 5.0, 5);
 width_bucket 
--------------
            6
(1 row)


在边界内:
 
  

postgres=# select width_bucket(0, 0.0, 5.0, 5);
 width_bucket 
--------------
            1
(1 row)
postgres=# select width_bucket(1, 0.0, 5.0, 5);
 width_bucket 
--------------
            2
(1 row)
postgres=# select width_bucket(1.9, 0.0, 5.0, 5);
 width_bucket 
--------------
            2
(1 row)
postgres=# select width_bucket(1.9999999, 0.0, 5.0, 5);
 width_bucket 
--------------
            2
(1 row)
postgres=# select width_bucket(2, 0.0, 5.0, 5);
 width_bucket 
--------------
            3
(1 row)
postgres=# select width_bucket(4.9999, 0.0, 5.0, 5);
 width_bucket 
--------------
            5
(1 row)


直接使用数组代表边界:
注意参数类型必须一致。
 
  

postgres=# select width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamptz[]);
 width_bucket 
--------------
            2
(1 row)
postgres=# select width_bucket(now(), array['yesterday', 'today', 'tomorrow']::timestamp[]);
ERROR:  function width_bucket(timestamp with time zone, timestamp without time zone[]) does not exist
LINE 1: select width_bucket(now(), array['yesterday', 'today', 'tomo...
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
postgres=# select width_bucket(1,'{0,1,100,200,300}'::int[]);
 width_bucket 
--------------
            2
(1 row)

边界表示如下,所以1落在第二个bucket
[0,1)
[1,100)
[100,200)
[200,300)


[参考]
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
存储 关系型数据库 数据库
深入了解 PostgreSQL:功能、特性和部署
PostgreSQL,通常简称为Postgres,是一款强大且开源的关系型数据库管理系统(RDBMS),它在数据存储和处理方面提供了广泛的功能和灵活性。本文将详细介绍 PostgreSQL 的功能、特性以及如何部署和使用它。
664 1
深入了解 PostgreSQL:功能、特性和部署
|
关系型数据库 大数据 PostgreSQL
PostgreSQL16-新特性-并行聚合
PostgreSQL16-新特性-并行聚合
142 0
|
存储 关系型数据库 数据库
探索PostgreSQL 14新特性--SEARCH和CYCLE
探索PostgreSQL 14新特性--SEARCH和CYCLE
86 0
|
缓存 监控 关系型数据库
[译]PostgreSQL16-新特性-新增IO统计视图:pg_stat_io
[译]PostgreSQL16-新特性-新增IO统计视图:pg_stat_io
228 0
|
存储 缓存 关系型数据库
PostgreSQL 14新特性--减少索引膨胀
PostgreSQL 14新特性--减少索引膨胀
470 0
|
存储 SQL Oracle
AnalyticDB PostgreSQL 7.0 支持存储过程(CREATE PROCEDURE)特性
AnalyticDB PostgreSQL 7.0 新增了存储过程功能的支持,让用户在使用ADB PG时能够更方便高效地开发业务,并能够更好地兼容Oracle等传统数仓的业务。
487 1
AnalyticDB PostgreSQL 7.0 支持存储过程(CREATE PROCEDURE)特性
|
存储 SQL JSON
大分区表高并发性能提升100倍?阿里云 RDS PostgreSQL 12 特性解读
世界上几乎最强大的开源数据库系统 PostgreSQL,于 2019 年 10 月 3 日发布了 12 版本,该版本已经在阿里云正式发布。PostgreSQL 12 在功能和性能上都有很大提升,如大分区表高并发性能提升百倍,B-tree 索引空间和性能优化,实现 SQL 2016 标准的 JSON 特性,支持多列 MCV(Most-Common-Value)统计,内联 CTE(Common table expressions)以及可插拔的表存储访问接口等。本文对部分特性进行解读。
2861 0
大分区表高并发性能提升100倍?阿里云 RDS PostgreSQL 12 特性解读
|
SQL 关系型数据库 Linux
知识分享之PostgreSQL——OIDS的特性与新版本去除SQL
之前一直使用的PostgreSQL 9.6系列版本,由于官方不再维护了,就准备换成最新稳定版本的,查看了一下官方版本说明,发现13系列版本是目前稳定性较好的版本,于是兴冲冲的更换了过来,但随之而来的就是一些新特性,其中就比如表中的OID字段,这个字段是对象标识符,之前能用于行标记,现在发现只有表才具有这个隐藏字段,行数据没有这个支持了,于是就需要将老版本的表进行关闭掉这个字段。下面我们就开始关闭之旅。
160 0
知识分享之PostgreSQL——OIDS的特性与新版本去除SQL
|
SQL 存储 JSON
PostgreSQL 14 版本特性浅析
## 性能增强 ### 大量连接高并发优化 - 场景: SaaS场景,微服务架构下的中心库场景 - 业务特点:客户端多,在线用户多,数据库并发连接非常多 - 价值: 比连接池网络少1跳, 性能更好, 支持绑定变量等连接池会话模式不支持的全部功能 ### 索引增强 1. 缓解高频更新负载下的btree索引膨胀 - 场景: 数据频繁更新,如游戏、交易、共享出行、IoT等行业 - 价值: 减少膨胀
|
SQL 存储 缓存
从研发角度深入了解RDS AliSQL内核2020新特性
内容简要: 一、关于内核 二、内核特性详解 一、 关于内核 (一)回归内核
从研发角度深入了解RDS AliSQL内核2020新特性

相关产品

  • 云原生数据库 PolarDB
  • 云数据库 RDS PostgreSQL 版