在数据库中,我们有表batter
,其中包含每年击球的每个击球手的记录以及他们当年的比赛统计数据。如何编写查询以从所有玩家中选择具有最大本垒数的每个玩家?
我一直在尝试
SELECT *
FROM master
WHERE batting.HR = (
SELECT MAX(batting.HR)
FROM batting
)
但是没有运气。我怎么能这样做?
答案 0 :(得分:3)
SELECT b.*
FROM batter b
INNER JOIN (
select year, Max(hr) as MaxHR
from batter
group by year
) y on b.year = y.year and b.HR = y.MaxHR
请注意,这很容易让两名球员联系。在这种情况下,你不清楚你想看到什么。
答案 1 :(得分:1)
假设您的RDBMS支持SQL2003,您可以使用窗口函数:
SELECT *
FROM
(
SELECT
batter,
year,
hr,
MAX(hr) OVER (PARTITION BY year) AS year_best_hr
FROM batting
)
WHERE hr = year_best_hr