mysql 查询但是两个不同的组依据

标签 mysql select group-by

如果我的数据是

Name - playerID - matchID - Innings - Runs
James   1   1   1   5
James   1   1   2   8
Darren  2   1   1   3
Darren  2   1   2   9
James   1   2   1   10
James   1   2   2   12
Darren  2   2   1   13
Darren  2   2   2   19

我的sql数据是

$query = "SELECT playerID, name,
        SUM(runs) AS runs_scored,
        MAX(runs) AS highest_score
    FROM matchPlayer GROUP BY playerID";

然后输出会是

James has scored 35 runs with a highest score of 18
Darren has scored 44 runs with a highest score of 19

现在我希望获得一场比赛中的最高总得分(即结合第 1 局和第 2 局)? 我不知道如何开始这个查询:(

编辑 我需要的确切信息是最高匹配总数,因此 James 有 13 次来自 matchID 1 的组合运行和 22 次来自 matchID 2 的组合运行 - 所以我得到的答案是 22。

最佳答案

您需要分两个阶段进行:

SELECT ms.playerID, mp.name, SUM(ms.runs_by_match) AS runs_scored,
    MAX(ms.runs_by_match) as highest_score
FROM
    matchPlayer as mp
    INNER JOIN (
        SELECT playerID, matchID, SUM(runs) AS runs_by_match
        FROM matchPlayer
        GROUP BY playerID, matchID
    ) AS ms ON mp.playerID = ms.playerID
GROUP BY
    ms.playerID, mp.name

关于mysql 查询但是两个不同的组依据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7327628/

相关文章:

mysql - 是否可以手动执行选择查询,而不会阻塞其他查询?

php - 如何获取没有对的值(根据 session ID,LOGIN没有LOGOUT对)

mysql - 如何处理维基百科转储中的重定向?

mysql - 使用 filesort 按 MySQL 中的日期时间列排序

javascript - 将元素添加到选择框,除非它们已经存在

sql - MySQL:哪些索引用于简单范围选择?

php - SQL 查询按 id 和预定义名称排序

mysql查询性能帮助

mysql - 分组依据以查找 SQL 中特定索引的平均差异

mysql - MySQL 查询连接表中的 GROUP BY、COUNT()