我在ASC和CHAM分别在ASC和DESC编写了一个sql到组。我怎样才能在每个季节选择最大的查姆值?为了进一步开发,我需要保留CHAMPION_ID。
发布于 2021-04-25 03:20:02
通常,您可以使用窗口函数来完成这一任务,但是您的数据库MariaDB v5.5是太老了,无法支持窗口功能和其他一些东西。我建议您要么使用升级MariaDB,要么在[医]小提琴上工作,要么使用独立的SQLite。
您可以使用子查询在不使用窗口函数的情况下完成此操作。
select *
from champs as c1
where cham = (
select max(cham)
from champs as c2
where c1.season = c2.season
)
只选择那些行,其字符等于该季节的最高字符。
您可能会尝试使用group by
,但这不会显示重复的。例如,春天是一切的纽带。
-- Only shows one row per season.
select *
from champs
group by season
having cham = max(cham);
试试看。
有窗口功能..。
加上季节性军衔。这是按季节划分的,订单是按车次划分的。军衔()将给领带分配同样的军衔。
select
*,
rank() over (partition by season order by cham desc) as season_rank
from champs
然后使用该表表达式作为公共表表达式,并仅选择带有seasonal_rank = 1的行。
with ranked as (
select
*,
rank() over (partition by season order by cham desc) as season_rank
from champs
)
select *
from ranked
where season_rank = 1;
试试看。
https://stackoverflow.com/questions/67249387
复制相似问题