percentile_approx_raw
返回与 x
中指定的百分位数对应的值。
如果 x
是一列,则此函数首先按升序对 x
中的值进行排序,并返回与百分位数 y
对应的值。
语法
PERCENTILE_APPROX_RAW(x, y);
参数
-
x
:它可以是一个列或一组值。它必须计算为 PERCENTILE。 -
y
:百分位数。支持的数据类型为 DOUBLE。取值范围:[0.0,1.0]。
返回值
返回一个 PERCENTILE 值。
示例
创建表 aggregate_tbl
,其中 percent
列是 percentile_approx_raw() 的输入。
CREATE TABLE `aggregate_tbl` (
`site_id` largeint(40) NOT NULL COMMENT "id of site",
`date` date NOT NULL COMMENT "time of event",
`city_code` varchar(20) NULL COMMENT "city_code of user",
`pv` bigint(20) SUM NULL DEFAULT "0" COMMENT "total page views",
`percent` PERCENTILE PERCENTILE_UNION COMMENT "others"
) ENGINE=OLAP
AGGREGATE KEY(`site_id`, `date`, `city_code`)
COMMENT "OLAP"
DISTRIBUTED BY HASH(`site_id`)
PROPERTIES ("replication_num" = "1");
将数据插入到表中。
insert into aggregate_tbl values (5, '2020-02-23', 'city_code', 555, percentile_hash(1));
insert into aggregate_tbl values (5, '2020-02-23', 'city_code', 555, percentile_hash(2));
insert into aggregate_tbl values (5, '2020-02-23', 'city_code', 555, percentile_hash(3));
insert into aggregate_tbl values (5, '2020-02-23', 'city_code', 555, percentile_hash(4));
计算与百分位数 0.5 对应的值。
mysql> select percentile_approx_raw(percent, 0.5) from aggregate_tbl;
+-------------------------------------+
| percentile_approx_raw(percent, 0.5) |
+-------------------------------------+
| 2.5 |
+-------------------------------------+
1 row in set (0.03 sec)