首页 > 解决方案 > 分区中的列值与 Rank 1 行中的值相同

问题描述

我希望我的 SQL 查询在分区中返回与分区的 Rank 1 行中同一列中的值相同的列值。

示例:下面是示例表:

Rank  Name  Class  PocketMoney
----  ----  -----  -----------
1       A     6         6
2       B     6         5
3       C     6         4
1       P     7         7
2       Q     7         6
1       R     8         8
2       S     8         7
3       T     8         6
4       U     8         5

我希望我的 SQL 查询的输出如下:

Rank  Name  Class  PocketMoney
----  ----  -----  -----------
1       A     6         6
2       B     6         6
3       C     6         6
1       P     7         7
2       Q     7         7
1       R     8         8
2       S     8         8
3       T     8         8
4       U     8         8

这在 SQL 查询中可能吗?

标签: mysqlsql

解决方案


是的,用于first_value从分区的第一行获取值。

select
  rank() over w,
  name,
  class,
  first_value(PocketMoney) over w as pocketmoney
from whatever
window w as (partition by class order by name asc)

推荐阅读