APPROXIMATE PERCENTILE_DISC 函数 - Amazon Redshift

APPROXIMATE PERCENTILE_DISC 函数

APPROXIMATE PERCENTILE_DISC 是一种假定离散分布模型的逆分布函数。该函数具有一个百分比值和一个排序规范,并返回给定集合中的元素。近似值可以大幅加快函数运行速度,相对错误率较低,约为 0.5%。

如果给定百分位数值,APPROXIMATE PERCENTILE_DISC 会使用分位数摘要算法估计 ORDER BY 子句中的表达式的离散百分位数。APPROXIMATE PERCENTILE_DISC 返回的值具有最小的积累分布值(针对同一排序规范),该值大于或等于百分位数

语法

APPROXIMATE PERCENTILE_DISC ( percentile ) WITHIN GROUP (ORDER BY expr)

参数

percentile

介于 0 和 1 之间的数字常数。计算中将忽略 Null。

WITHIN GROUP ( ORDER BY expr)

指定用于排序和计算百分比的数字或日期/时间值的子句。

返回值

与 WITHIN GROUP 子句中的 ORDER BY 表达式相同的数据类型。

使用说明

如果 APPROXIMATE PERCENTILE_DISC 语句包括 GROUP BY 子句,结果集将受限。这一限制将根据节点类型和节点数量发生变化。如果超出限制,函数将失败并会返回以下错误。

GROUP BY limit for approximate percentile_disc exceeded.

如果您需要评估的组数量超出了限制,请考虑使用 PERCENTILE_CONT 函数

示例

以下示例返回销售数量、销售总额和排名前十位日期的第五十个百分位数。

select top 10 date.caldate, count(totalprice), sum(totalprice), approximate percentile_disc(0.5) within group (order by totalprice) from listing join date on listing.dateid = date.dateid group by date.caldate order by 3 desc; caldate | count | sum | percentile_disc -----------+-------+------------+---------------- 2008-01-07 | 658 | 2081400.00 | 2020.00 2008-01-02 | 614 | 2064840.00 | 2178.00 2008-07-22 | 593 | 1994256.00 | 2214.00 2008-01-26 | 595 | 1993188.00 | 2272.00 2008-02-24 | 655 | 1975345.00 | 2070.00 2008-02-04 | 616 | 1972491.00 | 1995.00 2008-02-14 | 628 | 1971759.00 | 2184.00 2008-09-01 | 600 | 1944976.00 | 2100.00 2008-07-29 | 597 | 1944488.00 | 2106.00 2008-07-23 | 592 | 1943265.00 | 1974.00