在Postgres中,您将使用distinct on
:
select distinct on (player_id),t.*
from t
order by player_id,level desc,gap;
在MySQL或Postgres中,您可以执行以下操作:
select t.*
from (select t.*,row_number(player_id) order by (level desc,gap) as seqnum
from t
) t
where seqnum = 1;
,
在这里查询,您可以使用min()
和max()
函数。
select min(t1.gap),t2.lev,t1.player_id
from tableA t1
inner join
(select max(lev) lev,player_id
from tableA
group by player_id) t2 on t2.lev=t1.lev and t1.player_id = t2.player_id
group by t1.player_id,t2.lev
请参见dbfiddle。
,
您可以在postgres中使用此查询:
select x.player_id,x.level,min(x2.gap) as gap
from (select player_id,max(level) as level
from table group by player_id) x
join table x2 using(player_id,level)
group by x.player_id,x.level;
结果将是这样的:
player_id level gap
-----------------------
123 9 30
246 6 20
-----------------------
本文链接:https://www.f2er.com/2888172.html