Skip to content

Commit

Permalink
Apply suggestions from code review
Browse files Browse the repository at this point in the history
Co-authored-by: Grace Cai <[email protected]>
  • Loading branch information
hfxsd and qiancai authored Jul 18, 2024
1 parent c5b4e82 commit 9e5a388
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
2 changes: 1 addition & 1 deletion functions-and-operators/expressions-pushed-down.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ TiFlash 也支持[本页](/tiflash/tiflash-supported-pushdown-calculations.md)

> **注意:**
>
> 当作为[窗口函数](/functions-and-operators/window-functions.md)使用时,聚合函数不支持下推
> 当作为[窗口函数](/functions-and-operators/window-functions.md)使用时,聚合函数不支持下推到 TiKV
## 已支持下推的表达式列表

Expand Down
24 changes: 12 additions & 12 deletions functions-and-operators/window-functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ TiDB 中窗口函数的使用方法与 MySQL 8.0 基本一致,详情可参见

在 TiDB 中,你可以使用以下系统变量来控制窗口功能:

- [`tidb_enable_window_function`](/system-variables.md#tidb_enable_window_function):由于窗口函数会使用一些保留[关键字](/keywords.md),TiDB 提供了该系统变量用于关闭窗口函数。如果原先可以正常执行的 SQL 语句在升级 TiDB 后无法被解析语法,此时可以将 [`tidb_enable_window_function`](/system-variables.md#tidb_enable_window_function) 设置为 `OFF`
- [`tidb_enable_window_function`](/system-variables.md#tidb_enable_window_function):由于窗口函数会使用一些保留[关键字](/keywords.md),TiDB 提供了该系统变量用于关闭窗口函数功能。如果原先可以正常执行的 SQL 语句在升级 TiDB 后语法无法被解析,此时可以将 [`tidb_enable_window_function`](/system-variables.md#tidb_enable_window_function) 设置为 `OFF`
- [`tidb_enable_pipelined_window_function`](/system-variables.md#tidb_enable_pipelined_window_function):你可以使用该系统变量禁用窗口函数的流水线执行算法。
- [`windowing_use_high_precision`](/system-variables.md#windowing_use_high_precision):你可以使用该变量为窗口函数关闭高精度模式。

Expand All @@ -34,7 +34,7 @@ TiDB 支持除 `GROUP_CONCAT()` 和 `APPROX_PERCENTILE()` 以外的所有 [`GROU

## [`CUME_DIST()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_cume-dist)

`CUME_DIST()` 计算数值在数值组中的累积分布。请注意,你需要在 `CUME_DIST()` 中使用 `ORDER BY` 子句对数值组排序。否则,此函数将不会返回预期值。
`CUME_DIST()` 计算一个值在一组值中的累积分布。请注意,你需要在 `CUME_DIST()` 中使用 `ORDER BY` 子句对该组中的值进行排序。否则,此函数将不会返回预期值。

```sql
WITH RECURSIVE cte(n) AS (
Expand Down Expand Up @@ -68,7 +68,7 @@ FROM

## [`DENSE_RANK()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_dense-rank)

`DENSE_RANK()` 函数返回当前行的秩。它类似于 [`RANK()`](#rank)但不会在出现并列(具有相同值和顺序条件的行)时留下任何间隙
`DENSE_RANK()` 函数返回当前行的排名。它的作用类似于 [`RANK()`](#rank)但在处理具有相同值和排序条件的行时能够确保排名是连续的

```sql
SELECT
Expand Down Expand Up @@ -108,8 +108,8 @@ FROM (

下面的示例使用了两个不同的窗口定义:

- `PARTITION BY n MOD 2 ORDER BY n` 将表 `a` 中的数据分为两组:`1, 3``2, 4`。因此会返回 `1``2`,因为它们是这两组的第一个值。
- `PARTITION BY n <= 2 ORDER BY n` 将表 `a` 中的数据分为两组:`1, 2``3, 4`。因此,它返回`1``3`,取决于`n`属于哪一组。
- `PARTITION BY n MOD 2 ORDER BY n` 将表 `a` 中的数据分为两组:`1, 3` `2, 4`。因此会返回 `1``2`,因为它们是这两组的第一个值。
- `PARTITION BY n <= 2 ORDER BY n` 将表 `a` 中的数据分为两组:`1, 2` `3, 4`。因此,它会返回 `1``3`,取决于 `n` 属于哪一组。

```sql
SELECT
Expand Down Expand Up @@ -143,9 +143,9 @@ ORDER BY

## [`LAG()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_lag)

函数 `LAG(expr [, num [, default]])` 返回当前行前 `num` 行的 `expr` 值。如果不存在该行,则返回 `default` 值。默认情况下,未指定时,`num``1``default``NULL`
函数 `LAG(expr [, num [, default]])` 返回当前行之前第 `num` 行的 `expr` 值。如果不存在该行,则返回 `default` 值。默认情况下,未指定时,`num``1``default``NULL`

在下面的示例中,由于未指定 `num``LAG(n)` 返回上一行中 `n` 的值。当 `n``1` 时,由于前一行不存在,且未指定 `default` `LAG(1)` 返回 `NULL`
在下面的示例中,由于未指定 `num``LAG(n)` 返回上一行中 `n` 的值。当 `n``1` 时,由于上一行不存在,且未指定 `default` `LAG(1)` 返回 `NULL`

```sql
WITH RECURSIVE cte(n) AS (
Expand Down Expand Up @@ -228,9 +228,9 @@ ORDER BY

## [`LEAD()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_lead)

函数 `LEAD(expr [, num [,default]])` 返回当前行后 `num` 行的 `expr` 值。如果不存在该行,则返回 `default` 值。默认情况下,如果未指定 `num` `default``num``default`分别为 `1` `NULL`
函数 `LEAD(expr [, num [,default]])` 返回当前行之后第 `num` 行的 `expr` 值。如果不存在该行,则返回 `default` 值。默认情况下,未指定时,`num` `1``default` `NULL`

在下面的示例中,由于未指定 `num``LEAD(n)` 返回当前行之后下一行中 `n` 的值。当 `n``10` 时,由于下一行不存在,且未指定 `default` `LEAD(10)` 返回 `NULL`
在下面的示例中,由于未指定 `num``LEAD(n)` 返回当前行之后下一行中 `n` 的值。当 `n``10` 时,由于下一行不存在,且未指定 `default` `LEAD(10)` 返回 `NULL`

```sql
WITH RECURSIVE cte(n) AS (
Expand Down Expand Up @@ -319,7 +319,7 @@ ORDER BY

## [`NTILE()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_ntile)

`NTILE(n)` 函数将窗口分成 `n` 组,并返回数组的编号
`NTILE(n)` 函数将窗口划分为 `n` 个分组,并返回各行的分组编号

```sql
WITH RECURSIVE cte(n) AS (
Expand Down Expand Up @@ -361,7 +361,7 @@ FROM

## [`PERCENT_RANK()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_percent-rank)

`PERCENT_RANK()` 函数返回一个介于 0 和 1 之间的数字,表示值小于当前窗口值的行的百分比
`PERCENT_RANK()` 函数返回一个介于 0 和 1 之间的数字,表示值小于当前行值的行的百分比

```sql
SELECT
Expand Down Expand Up @@ -398,7 +398,7 @@ FROM (

## [`RANK()`](https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html#function_rank)

`RANK()` 函数类似于 [`DENSE_RANK()`](#dense_rank)但会在出现并列(具有相同值和排序条件的行)时留下间隙。这意味着它提供的是绝对排名。例如,排名 7 意味着有 6 行的排名较低
`RANK()` 函数的作用类似于 [`DENSE_RANK()`](#dense_rank)但在处理具有相同值和排序条件的行时返回的排名是不连续的。这意味着它提供的是绝对排名。例如,排名 7 意味着有 6 个行的排名更靠前

```sql
SELECT
Expand Down

0 comments on commit 9e5a388

Please sign in to comment.