1、原数据如下,目标是一个用户id有多种方式,需要取优先级较高的一条。
一个用户id对于不同的服务对象存在多种岗位模式,现在要取用户的最高岗位模式能力。
分岗模式>一条龙模式>其他 举例数据如下。
group_id | account_type |
1265466950677 | 分岗模式 |
1265466950677 | 一条龙模式 |
1266150556690 | 分岗模式 |
1266150556690 | 一条龙模式 |
1266150556690 | 其他 |
2、代码如下
考虑row_number 函数 和 case when 函数结合 逻辑如下:
select group_id,account_type,
row_number() over(partition by group_id order by (case when account_type='分岗模式' then 1 when account_type='一条龙模式' then 2 else 3 end)) rn
from table_name a;
3、代码运行结果
最后再取rn=1的部分,即可实现需求。