max() over(partition by … order by …)
时间: 2023-12-01 08:05:07 浏览: 153
最大数,排序
4星 · 用户满意度95%
`max() over(partition by … order by …)` 是一种窗口函数,用于计算指定分区内的最大值。
在使用该函数时,可以通过 `partition by` 子句指定分区的条件,通过 `order by` 子句指定排序的条件。
例如,假设有以下数据:
```
+----+-------+-------+
| ID | Group | Value |
+----+-------+-------+
| 1 | A | 10 |
| 2 | A | 15 |
| 3 | B | 20 |
| 4 | B | 25 |
| 5 | B | 30 |
+----+-------+-------+
```
如果想要在每个分组内按照 `Value` 的降序找出最大值,则可以使用以下查询:
```sql
SELECT ID, Group, Value,
MAX(Value) OVER (PARTITION BY Group ORDER BY Value DESC) AS MaxValue
FROM your_table;
```
执行上述查询后,将得到以下结果:
```
+----+-------+-------+----------+
| ID | Group | Value | MaxValue |
+----+-------+-------+----------+
| 2 | A | 15 | 15 |
| 1 | A | 10 | 15 |
| 5 | B | 30 | 30 |
| 4 | B | 25 | 30 |
| 3 | B | 20 | 30 |
+----+-------+-------+----------+
```
在结果中,`MaxValue` 列显示了每个分组内的最大值。
阅读全文