获取SQL查询中每个不同记录的最大平均值

Ada*_*ith 6 sql sqlite aggregate aggregate-functions

我有一些表格,其中包含有关球员的数据以及本赛季他们在联赛中在保龄球中心击败的比赛.这个特定查询的用途是对男性和女性今年的前X平均值进行排序.我已经把这一切都搞定了,但是在某些特定情况下,当一些球员在多个联赛中打球并且在顶级X中有超过一个平均值时,我仍然存在问题.

显然,我只想列出给定球员的最佳平均值,所以如果球员A在联盟ABC中的平均得分最高,而联盟DEF的平均得分为198,那么我只想要列出200.

这是我想要更改的查询的简化版本,因为现在我必须手动删除重复项或者我必须用另一种语言编写分类器,但我宁愿在纯SQL中执行此操作.(我只从该示例的查询中删除了不相关的信息):

SELECT playerId, ROUND(AVG(score),2)Average, season, leagueName, COUNT(score)NumGames FROM Scores
WHERE season = '2011-2012' AND score > -1
GROUP BY season, playerID, leagueName
ORDER BY Average DESC LIMIT 0,30
Run Code Online (Sandbox Code Playgroud)

基本上,该Scores表包含每个单独的游戏,一个playerId,玩游戏的季节和leagueName(以及本例中不需要的其他列).

WHERE是为了确保比赛在本赛季进行,并且得分为正(-1表示人们不在场时).我根据赛季,球员ID和联盟名称对所有内容进行分组,因此我得到每个球员的平均PER LEAGUE,而不是在不同联赛中所有比赛的平均值.

我尝试使用DISTINCT关键字,但这不起作用,因为我不能DISTINCT只使用一个列.我也尝试了其他的东西,但是它们都没有接近工作,所以我想知道是否甚至可以这样做,或者我是否必须使用另一种语言对这个结果集进行排序并删除重复项?

And*_*mar 3

您可以在子查询中计算每个联赛每个球员的平均值:

select  playerId
,       max(league_avg.score)
from    (
        select  playerId
        ,       avg(score) as score
        from    Scores
        where   season = '2011-2012' 
                and score > -1
        group by
                playerId
        ,       leagueName
        ) as league_avg
group by
        playerId
Run Code Online (Sandbox Code Playgroud)