MySQL聚合函数将结果减少到单行

时间:2014-08-21 18:00:56

标签: mysql sum aggregates

所以,让我们说我有一个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

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

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

group by event添加到您的对帐单中:

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