---
title: "PERCENTILE_DISC - OceanBase 数据库 V4.4.0 | OceanBase 文档中心"
description: PERCENTILE_DISC 描述 该函数根据一个百分位值和指定排序规范，返回大于或等于百分位值的最小累积分布值（相对于同一排序规范）的值。在计算中忽略空值。 说明 作为分析函数使用时，需要使用 OVER 子句定义窗口进行计算。它对一组行的集合进行计算并返回多个值。 作为聚合函数使用时，该函数对一组行的集合进行聚合…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.4.0

# PERCENTILE_DISC

更新时间：2025-08-24 11:03:19

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.4.0/zh-CN/700.reference/500.sql-reference/100.sql-syntax/300.common-tenant-of-oracle-mode/500.functions-of-oracle-mode/300.aggregate-functions-of-oracle-mode/1700.percentile-disc-agg-of-oracle-mode.md)  

## 描述

该函数根据一个百分位值和指定排序规范，返回大于或等于百分位值的最小累积分布值（相对于同一排序规范）的值。在计算中忽略空值。

#### 说明

- 作为分析函数使用时，需要使用 `OVER` 子句定义窗口进行计算。它对一组行的集合进行计算并返回多个值。
 - 作为聚合函数使用时，该函数对一组行的集合进行聚合计算，结果只能返回一个值，此时不需要加 `OVER` 子句。

## 语法

```sql
PERCENTILE_DISC(expr1) WITHIN GROUP (ORDER BY expr2 [ DESC | ASC ])
[ OVER (query_partition_clause) ]

```

## 参数解释

| 参数 | 说明 |
| --- | --- |
| expr1 | 指定百分位的值，是一个数值数据类型的常量，取值范围为 [0,1]。 |
| expr2 | 指定用于排序和计算百分比的表达式，数据类型属于数值类型或日期时间类型。 |
| DESC \| ASC | 指定列表的排序方式，为可选项。   - `ASC` 为升序排序，为默认值。 - `DESC` 为降序排序。 |
| OVER | 使用 `OVER` 子句定义窗口进行计算。详细信息请参见 [分析函数说明](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000003383459)。 |

## 返回类型

返回与参数 `expr2` 相同的数据类型。

## 示例

现有已创建的表 `tbl1`。

```sql
obclient> SELECT * FROM tbl1;
+------+------+------+------+
| COL1 | COL2 | COL3 | COL4 |
+------+------+------+------+
|    1 | A1   |    8 |   12 |
|    1 | A2   |   10 |   15 |
|    1 | A3   |   11 |   16 |
|    2 | B1   |    9 |   14 |
|    2 | B2   |   10 |   15 |
|    2 | B3   |    8 |   13 |
|    2 | B4   |   11 |   16 |
|    3 | C1   |    8 |   18 |
|    3 | C2   |    9 |   16 |
|    3 | C3   |   10 |   15 |
|    3 | C4   |   11 |   12 |
|    3 | C5   |   12 |   10 |
+------+------+------+------+
12 rows in set

```

### 聚合函数示例

计算列 `col4` 的离散百分比中位数。

```sql
obclient> SELECT PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY col4) "PERCENTILE_DISC" FROM tbl1;
+-----------------+
| PERCENTILE_DISC |
+-----------------+
|              15 |
+-----------------+
1 row in set

```

### 分析函数示例

按列 `col1` 分组，计算列 `col4` 的离散百分比中位数。

```sql
obclient> SELECT col1,col4,PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY col4) OVER(PARTITION BY col1) "PERCENTILE_DISC"
          FROM tbl1;
+------+------+-----------------+
| COL1 | COL4 | PERCENTILE_DISC |
+------+------+-----------------+
|    1 |   12 |              15 |
|    1 |   15 |              15 |
|    1 |   16 |              15 |
|    2 |   14 |              14 |
|    2 |   15 |              14 |
|    2 |   13 |              14 |
|    2 |   16 |              14 |
|    3 |   18 |              15 |
|    3 |   16 |              15 |
|    3 |   15 |              15 |
|    3 |   12 |              15 |
|    3 |   10 |              15 |
+------+------+-----------------+
12 rows in set

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
