开窗函数sql用法实例(开窗函数在sql中的执行顺序)

开窗函数sql用法实例(开窗函数在sql中的执行顺序)

首页维修大全综合更新时间:2024-08-05 17:53:29

开窗函数sql用法实例

开窗函数(Window Function)是一种 SQL 函数,支持在查询结果集的每一行上执行聚合操作,使用在 SELECT 和 ORDER BY 子句中。开窗函数使用 OVER 子句定义一个窗口(Window),指定如何从输入行组中构造一个计算行集合,然后基于该行集合计算聚合值或对输出进行变换。下面是开窗函数的 SQL 用法实例:

假设我们有一个名为 students_scores 的表,包含学生名字和成绩:

| id | name | score |

|----|---------|-------|

| 1 | Alice | 80 |

| 2 | Bob | 90 |

| 3 | Charlie | 85 |

| 4 | David | 95 |

| 5 | Eve | 88 |

1. 计算每个学生的成绩排名(Rank):

```

SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank

FROM students_scores;

```

结果:

| name | score | rank |

|---------|-------|------|

| David | 95 | 1 |

| Bob | 90 | 2 |

| Eve | 88 | 3 |

| Charlie | 85 | 4 |

| Alice | 80 | 5 |

2. 计算每个学生的成绩排名(Dense Rank):

```

SELECT name, score, DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank

FROM students_scores;

```

结果:

| name | score | dense_rank |

|---------|-------|------------|

| David | 95 | 1 |

| Bob | 90 | 2 |

| Eve | 88 | 3 |

| Charlie | 85 | 4 |

| Alice | 80 | 5 |

3. 计算每个学生的成绩排名(Row Number):

```

SELECT name, score, ROW_NUMBER() OVER (ORDER BY score DESC) AS row_number

FROM students_scores;

```

结果:

| name | score | row_number |

|---------|-------|------------|

| David | 95 | 1 |

| Bob | 90 | 2 |

| Eve | 88 | 3 |

| Charlie | 85 | 4 |

| Alice | 80 | 5 |

以上是一些常见的开窗函数用例,不同的场景下可能需要不同的聚合和窗口定义方式。需要根据具体需求来选择合适的开窗函数及其参数设置。

大家还看了
也许喜欢
更多栏目

© 2021 3dmxku.com,All Rights Reserved.