mysql - SQL 用于根据评分获取顶级用户并使用结果获取其他数据

标签 mysql sql

我正试图想出一个 SQL 来获取每一个

  • 国家名称,
  • 代码,
  • 游戏数量,
  • TOP 玩家的名字和
  • 他的身份证
  • 基于游戏表中的 SUM(评分)。

我无法根据评分获取顶级玩家的名字。

enter image description here

SQLFiddle Demo

最佳答案

SELECT  x.Country AS CountryName,
        x.Code,
        a.totalCount as NumberOfGames,
        y.Name AS PlayersName,
        y.ID AS PlayersID,
        a.totalRating
FROM    (
            SELECT  player_ID, Country, COUNT(*) totalCount, SUM(Rating) totalRating
            FROM    Games
            GROUP BY player_ID, Country
        ) a 
        INNER JOIN
        (
            SELECT Country, Max(totaLRating) maxRating
            FROM
            (
                SELECT  player_ID, Country, SUM(Rating) totalRating
                FROM    Games
                GROUP BY player_ID, Country
            ) s
            GROUP BY Country
        ) b ON a.Country = b.Country AND
                a.totalRating = b.maxRating
        INNER JOIN Country x
            ON a.Country = x.ID
        INNER JOIN Players y
            ON a.player_ID = y.ID

关于mysql - SQL 用于根据评分获取顶级用户并使用结果获取其他数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678619/

相关文章:

mysql - 使用加密的 Amazon RDS 的 SQL 范围查询

mysql - REST API 不支持 SQL 分组。有办法克服这个问题吗?

mysql - 如何将此正则表达式转换为 mysql posix

SQL 按年龄范围和性别对患者进行分组

sql - 除了 SQL Server 中的 SQL 语句未返回预期结果

MySQL - 如何获取过去两小时内未接到电话的所有客户

php - 在 php 中使用序列化将关联数组存储在数据库中

sql - SparkSQL支持子查询吗?

mysql - mysql查询中的多表内连接

MySQL 查询优化 - 不使用主键?