[英]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.