繁体   English   中英

分区中的列值与排名 1 行中的值相同

[英]Same column values in a partition as value in Rank 1 row

我希望我的 SQL 查询在分区中返回与分区排名 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 查询的 output 是这样的:

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 查询中可能吗?

是的,使用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)

如果您特别想要与rank = 1相同的值,则使用条件 window function:

select t.*,
       max(case when rank = 1 then pocketmoney end) over (partition by class) as pocketmoney_1
from t;

注意:这是专门回答您问题的通用解决方案。 即使没有rank = 1或等级小于 1,它也会执行您想要的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM