所以,让我们说我有一个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
我如何获得我正在寻找的结果,这与原始查询的行数相同,但每行的列数总和?
答案 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;