1

因此,假设我有一个 MySQL 查询,它从体育结果表中选择事件和得分:

SELECT event, score FROM results;

这会返回一个类似这样的表:

Long jump / 350
50 M dash / 500

而且我还需要所有分数的总和,以便返回如下所示:

Long jump / 350 / 850
50 M dash / 500 / 850

我试图将查询更改为如下所示:

SELECT event, score, SUM(score) AS total FROM results;

但这将返回减少到一行:

Long jump / 350 / 850

如何获得我正在寻找的结果,该结果与原始查询的行数相同,但每行的列总和?

4

2 回答 2

2

使用 GROUP BY 子句为事件列的每个不同值获取一行:

SELECT event, score, SUM(score) AS total FROM results GROUP BY event, score;

但我怀疑表中应该有一个运动员ID,并且每个运动员的总数应该显示在总列中。这可以通过加入使用 GROUP BY 子句的子选择来完成:

SELECT
    r.athlete_id,
    r.event,
    r.score,
    t.total
FROM
    results r
INNER JOIN (
    SELECT
        r1.athlete_id,
        SUM(r1.score) total
    FROM
        results r1
    GROUP BY
        r1.athlete_id
) t
ON
    r.athlete_id = t.athlete_id;
于 2014-08-21T18:02:53.883 回答
0

添加group by event到您的声明中:

SELECT event, score, SUM(score) AS total FROM results group by event;
于 2014-08-21T18:03:38.340 回答