MYSQL初学者ORDER By-只希望列中每个条目的最大值

MYSQL初学者ORDER By-只希望列中每个条目的最大值,mysql,Mysql,我正在努力学习MYSQL,这样我就可以进行自己的棒球研究了。到目前为止,我已经取得了成功,但一个看似简单的查询被证明是困难的,我似乎找不到解决方案 我试着写一个查询,询问我们每年谁的人力资源使用率最高。我的代码是: SELECT playerID, teamID, yearID AS Year, MAX(HR) AS MaxHR FROM Batting GROUP BY yearID, playerID, teamID ORDER BY

我正在努力学习MYSQL,这样我就可以进行自己的棒球研究了。到目前为止,我已经取得了成功,但一个看似简单的查询被证明是困难的,我似乎找不到解决方案

我试着写一个查询,询问我们每年谁的人力资源使用率最高。我的代码是:

SELECT 
    playerID, teamID, 
    yearID AS Year,
    MAX(HR) AS MaxHR
FROM
    Batting
GROUP BY 
    yearID, playerID, teamID
ORDER BY 
    yearID DESC, MAXHR DESC;
这接近于我想要的,但是我给了每一个球员一年的时间顺序,而不是仅仅一个然后是下一年。我肯定我错过了一些明显的东西


感谢您的帮助

您应该使用子选择获取yearID和HR

SELECT playerID, 
       teamID, 
       yearID AS Year,
       HR AS MaxHR
      FROM Batting
WHERE (yearID, HR) in (select yearID, max(hr) 
                         from batting group by yearID)
ORDER BY yearID DESC, MAXHR DESC;

除了使用子查询,您还可以将表连接到自身,以获得所需的结果,如下所示

SELECT a.playerID, a.teamID, a.yearID as YEAR, a.HR AS MAXHR
FROM Batting a LEFT JOIN Batting b
ON a.yearID = b.yearID and a.HR < b.HR 
WHERE b.HR IS NULL;

这基本上只是将表连接到自身,其中年份相等,并且左侧表中的行与右侧连接表中的行没有更高的运行率

yearID是什么类型的数字或日期,并添加一点关于什么是人力资源计数/其他方面的详细信息???搜索“每组最大n”。@MalikAsif。。请更好地解释为什么这不是一个好的解决方案由于性能原因,这不是一个好的外观,这是一种相同的答案,也是一种更好的解决方法问题与性能无关。。在这个问题中,没有关于DB维数的信息。。因此,我认为这方面与问题无关。请注意,不相关的子查询将以数量级的速度加快