首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >sql根据属性保留第一行。

sql根据属性保留第一行。
EN

Stack Overflow用户
提问于 2021-04-25 03:05:42
回答 1查看 119关注 0票数 0

我在ASC和CHAM分别在ASC和DESC编写了一个sql到组。我怎样才能在每个季节选择最大的查姆值?为了进一步开发,我需要保留CHAMPION_ID。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-25 03:20:02

通常,您可以使用窗口函数来完成这一任务,但是您的数据库MariaDB v5.5是太老了,无法支持窗口功能和其他一些东西。我建议您要么使用升级MariaDB,要么在[医]小提琴上工作,要么使用独立的SQLite

您可以使用子查询在不使用窗口函数的情况下完成此操作。

代码语言:javascript
运行
复制
select *
from champs as c1
where cham = (
  select max(cham)
  from champs as c2
  where c1.season = c2.season
)

只选择那些行,其字符等于该季节的最高字符。

您可能会尝试使用group by,但这不会显示重复的。例如,春天是一切的纽带。

代码语言:javascript
运行
复制
-- Only shows one row per season.
select *
from champs
group by season
having cham = max(cham);

试试看

有窗口功能..。

加上季节性军衔。这是按季节划分的,订单是按车次划分的。军衔()将给领带分配同样的军衔。

代码语言:javascript
运行
复制
select
  *,
  rank() over (partition by season order by cham desc) as season_rank
from champs

然后使用该表表达式作为公共表表达式,并仅选择带有seasonal_rank = 1的行。

代码语言:javascript
运行
复制
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;

试试看

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67249387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档