首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何根据排名找到团队的最小和最大值

问如何根据排名找到团队的最小和最大值
EN

Stack Overflow用户
提问于 2021-01-11 19:38:36
回答 1查看 65关注 0票数 0

问:列出第一名和最后一名球队以及他们每年的击球次数SQL查询是什么,我如何在同一列中按年份对排名和分组结果执行min和Max操作?

下面是我尝试在其上编写SQL的Teams表的列

此处的列是说明的Teams表列

代码语言:javascript
复制
    yearID         Year
    lgID           League
    teamID         Team
    franchID       Franchise (links to TeamsFranchise table)
    divID          Team's division
    Rank           Position in final standings
    AB             At bats

期望输出

我试图在同一年的排名中实现最小和最大,但无法计算出如何在同一列的排名中获得最小最大值

代码语言:javascript
复制
   Team ID, Year, Rank, At Bats 
   PH1,     1871,  1,    1281
   RC1,     1871,  9,    1036
   LAA,     2014,  1,    5652

样本数据

代码语言:javascript
复制
 yearID lgId    teamID  franchID  divID   Rank    Ab(at-bats)
 '1902', 'AL', 'BOS',   'BOS',     '',    '3',   '4875'
 '1914', 'NL', 'BRO',   'LAD',     '',   '5',   '1386'
 '1925', 'AL', 'CLE',    'CLE',    '',   '6',   '1631'
 '1937', 'NL', 'NY1',    'SFG',    '',    '1',   '1484'

MySql脚本给我错误

代码语言:javascript
复制
select teamID,yearID,Rank,AB, 
RANK() OVER (PARTITION BY yearID order by Rank DESC) other_rank
from Teams;

错误

代码语言:javascript
复制
   ERROR 1064 (42000): You have an error in your SQL syntax; check the 
   manual that corresponds to your MySQL server version for the right 
   syntax to use near '(PARTITION BY yearID order by Rank DESC) other_
   rank from Teams' at line 1
EN

回答 1

Stack Overflow用户

发布于 2021-01-11 23:13:49

像这样的东西可能会起作用:

代码语言:javascript
复制
with max_rank as (
    SELECT yearID, max(Rank) as MaxRank
    from Teams
    Group by yearID
)
SELECT T.*
FROM Teams T
LEFT OUT JOIN max_rank M ON T.yearID = M.yearid AND T.rank = m.MaxRank
WHERE T = 1 OR T.rank = M.MaxRank;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65666179

复制
相关文章

相似问题

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