我有这个查询,生成了下面的表:
select season,
guildname,
count(guildname) as mp_count,
(count(guildname)/600::float)*100 as grank
from mp_rankings
group by season, guildname
order by grank desc
<表类>季节 guildname mp_count grank tbody><<tr>10 传说 56 9.33333333333333 9 传说 54 9 10沼泽草地 50 8.33333333333333 9 神秘 46 7.66666666666667 10神秘 42 7 9 沼泽草地 39道明> 10100 36 6 9 PARABELLUM 33 5.5 10PARABELLUM 29日4.833333333333339 100 29日 4.83333333333333 表类>
对分组结果使用公共表表达式("CTE"),并将其与自身连接以计算与前一季的差值:
with summary as (
select
season,
guildname,
count(*) as mp_count, -- simplified equivalent expression
count(*)/6 as grank -- simplified equivalent expression
from mp_rankings
group by season, guildname
)
select
a.season,
a.guildname,
a.mp_count,
a.grank,
a.mp_count - b.mp_count as prev_season_percent_diff
from summary a
left join summary b on b.guildname = a.guildname
and b.season = a.season - 1
where a.season = (select max(season) from summary)
order by a.grank desc
如果你真的想要一个%
在结果中,连接一个%
到差值计算。