【发布时间】:2021-01-11 23:13:48
【问题描述】:
问题: 列出第一名和最后一名的球队以及他们每年的击球次数 什么是 SQL 查询,我如何按年份对排名和分组结果执行 min 和 Max 同一列?
下面是我尝试编写 SQL 的 Teams 表的列
这里解释了列 团队表列
yearID Year
lgID League
teamID Team
franchID Franchise (links to TeamsFranchise table)
divID Team's division
Rank Position in final standings
AB At bats
期望的输出
我试图在同一年达到最低和最高等级,但无法弄清楚 如何获得同一列中排名的最小最大值
Team ID, Year, Rank, At Bats
PH1, 1871, 1, 1281
RC1, 1871, 9, 1036
LAA, 2014, 1, 5652
样本数据
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 脚本出现错误
select teamID,yearID,Rank,AB,
RANK() OVER (PARTITION BY yearID order by Rank DESC) other_rank
from Teams;
错误
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
【问题讨论】:
-
你能指定任何你可能尝试过的代码吗?
-
好吧,我尝试的是在 diff 列中给我排名 min 和 max ,这在这里没有多大帮助。我知道该怎么做,但我不知道我们如何才能在排名中做到最低和最高。像 rank over partition 这样的东西在这里不起作用,因为我猜这里已经给出了排名。
-
请提供一些示例数据以及与该示例数据相关的预期输出。另外,请标记您正在使用的正确数据库。
-
请不要标记垃圾邮件;删除与您的问题无关的 dbms 标签。
-
@Popeye 使用 mysql ,提供示例数据和所需的输出值可能会有所不同,但如果您看到输出,您会知道我们正在尝试按同一年的排名查找最小值和最大值跨度>