

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# APPROXIMATE PERCENTILE\$1DISC 函数
<a name="r_APPROXIMATE_PERCENTILE_DISC"></a>

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

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

## 语法
<a name="r_APPROXIMATE_PERCENTILE_DISC-synopsis"></a>

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

## 参数
<a name="r_APPROXIMATE_PERCENTILE_DISC-arguments"></a>

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

WITHIN GROUP ( ORDER BY *expr*)   
指定用于排序和计算百分比的数字或日期/时间值的子句。

## 返回值
<a name="r_APPROXIMATE_PERCENTILE_DISC-returns"></a>

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

## 使用说明
<a name="r_APPROXIMATE_PERCENTILE_DISC-usage-notes"></a>

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

```
GROUP BY limit for approximate percentile_disc exceeded.
```

如果您需要评估的组数量超出了限制，请考虑使用 [PERCENTILE\$1CONT 函数](r_PERCENTILE_CONT.md)。

## 示例
<a name="r_APPROXIMATE_PERCENTILE_DISC-examples"></a>

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

```
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
```