---
title: "ZIPF - OceanBase 数据库 V4.3.5 | OceanBase 文档中心"
description: "ZIPF 声明 ZIPF(&lt;s&gt; , &lt;N&gt; , &lt;gen&gt;) 说明 该函数返回一个符合齐夫分布（Zipf-distributed）的整数，取值范围为 [0, N)，分区的特征指数为 s 。 s 为特征指数， s 越大生成的序列越倾斜。将序列绘制成曲线时，曲线越陡峭。 s 和 N 取值要求：必须是一个标量值，不随行迭…"
---
切换语言

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

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

# ZIPF

更新时间：2026-07-15 20:42:45

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.5/zh-CN/700.reference/500.sql-reference/100.sql-syntax/200.common-tenant-of-mysql-mode/400.functions-of-mysql-mode/200.single-row-functions-of-mysql-mode/400.mathematical-functions-of-mysql-mode/5000.zipf-of-mysql-mode.md)  

## 声明

```sql
ZIPF(<s> , <N> , <gen>)

```

## 说明

该函数返回一个符合齐夫分布（Zipf-distributed）的整数，取值范围为 [0, N)，分区的特征指数为 `s`。

- `s` 为特征指数，`s` 越大生成的序列越倾斜。将序列绘制成曲线时，曲线越陡峭。
 - `s` 和 `N` 取值要求：必须是一个标量值，不随行迭代而变。例如，整形或浮点型常量、标量函数等，PL 里还可以是 `@v1`、`1+@v3` 等。`s` 的取值范围为 [1, +∞)，`N` 的取值范围为 [1，16777215]。
 - `zipf` 算法实现时消耗的存储、计算资源和 `N` 的取值相关。算法空间复杂度为 `O(N)`，每生成一个整数的时间复杂度为 `O(logN)`。所以，`N` 的取值范围被限制为 [1, 16777215]。
 - `gen` 是一个数值生成函数，通常使用 `RANDOM()` 函数生成。如果传入值是一个常量，则 `zipf()` 函数返回值也为一个定值。

## 示例

如下示例为使用 `ZIPF()` 函数返回符合齐夫分布的整数。

```shell
obclient> SELECT ZIPF(1, 10, RANDOM()) FROM TABLE(GENERATOR(6));
+-----------------------+
| ZIPF(1, 10, RANDOM()) |
+-----------------------+
|                     4 |
|                     5 |
|                     2 |
|                     1 |
|                     0 |
|                     2 |
+-----------------------+
6 rows in set

obclient> SELECT ZIPF(1, 10, 0415) FROM TABLE(GENERATOR(6));
+-------------------+
| ZIPF(1, 10, 0415) |
+-------------------+
|                 8 |
|                 8 |
|                 8 |
|                 8 |
|                 8 |
|                 8 |
+-------------------+
6 rows in set

obclient> SELECT ZIPF(ABS(-1), 23, RANDOM()) FROM DUAL;
+-----------------------------+
| ZIPF(ABS(-1), 23, RANDOM()) |
+-----------------------------+
|                           1 |
+-----------------------------+
1 row in set

```

`ZIPF()` 函数的 `s` 取值对分布存在影响，示例如下。

```shell
obclient> SELECT  COUNT(*), ZIPF(1, 10, RANDOM()) v FROM TABLE(GENERATOR(10000)) GROUP BY v ORDER BY 1;
+----------+------+
| COUNT(*) | v    |
+----------+------+
|      350 |    9 |
|      369 |    8 |
|      450 |    7 |
|      488 |    6 |
|      559 |    5 |
|      727 |    4 |
|      877 |    3 |
|     1100 |    2 |
|     1755 |    1 |
|     3325 |    0 |
+----------+------+
10 rows in set

obclient> SELECT COUNT(*), ZIPF(2, 10, RANDOM()) v FROM TABLE(GENERATOR(10000)) GROUP BY v ORDER BY 1;
+----------+------+
| COUNT(*) | v    |
+----------+------+
|       69 |    9 |
|       73 |    8 |
|      102 |    7 |
|      118 |    6 |
|      187 |    5 |
|      260 |    4 |
|      419 |    3 |
|      679 |    2 |
|     1632 |    1 |
|     6461 |    0 |
+----------+------+
10 rows in set

obclient> SELECT COUNT(*), ZIPF(3, 10, RANDOM()) v FROM TABLE(GENERATOR(10000)) GROUP BY v ORDER BY 1;
+----------+------+
| COUNT(*) | v    |
+----------+------+
|        6 |    9 |
|       12 |    8 |
|       15 |    7 |
|       35 |    5 |
|       40 |    6 |
|       77 |    4 |
|      118 |    3 |
|      292 |    2 |
|     1106 |    1 |
|     8299 |    0 |
+----------+------+
10 rows in set

obclient> SELECT COUNT(*), ZIPF(4, 10, RANDOM()) v FROM TABLE(GENERATOR(10000)) GROUP BY v ORDER BY 1;
+----------+------+
| COUNT(*) | v    |
+----------+------+
|        1 |    8 |
|        1 |    7 |
|        1 |    9 |
|        2 |    5 |
|        6 |    6 |
|       19 |    4 |
|       35 |    3 |
|      120 |    2 |
|      548 |    1 |
|     9267 |    0 |
+----------+------+
10 rows in set

obclient> SELECT COUNT(*), ZIPF(5, 10, RANDOM()) v FROM TABLE(GENERATOR(10000)) GROUP BY v ORDER BY 1;
+----------+------+
| COUNT(*) | v    |
+----------+------+
|        2 |    5 |
|        3 |    4 |
|       18 |    3 |
|       31 |    2 |
|      309 |    1 |
|     9637 |    0 |
+----------+------+
6 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) 咨询热线
