Можно ли получить сумму total_score в этом запросе?

Итак, у меня есть таблица ссылок и таблица голосов за эти ссылки. Так, например, ссылка google.co.uk имеет одну запись в таблице ссылок, а затем может иметь четыре записи голосования в таблице голосов, каждая из которых имеет оценку -1, 1 или 2. Я сделал этот запрос, который суммирует голоса для каждой ссылки, но возможно ли суммировать все оценки для всех ссылок в одном запросе, чтобы у пользователя была оценка?

SELECT *, SUM(v.vote_score) AS overall_score 
FROM mdl_link_critic_links l 
    JOIN mdl_link_critic_votes v on l.id = v.link_id 
WHERE l.user_id = '3' 
GROUP BY l.id

результаты такие

google.co.uk, user_id 3, overall_score 3
ebay.co.uk , user_id 3, overall_score 4
stackoverflow.com, user_id, 3, overall_score 10

и я хотел бы суммировать все общие баллы, так что в этом случае будет 17


person Rich    schedule 07.06.2016    source источник
comment
так что в этом случае будет 17 - Вы имеете в виду 16. 3, 3, 3, 4 и 3 дают 16, а не 17. ;-)   -  person Funk Forty Niner    schedule 07.06.2016
comment
нет, суммируйте поле total_score, 3 + 4 + 10 дают 17 :)   -  person Rich    schedule 07.06.2016
comment
WITH ROLLUP это даст вам null, null,17   -  person splash58    schedule 07.06.2016
comment
Вы по-прежнему хотите видеть 3 строки результатов или только общее количество   -  person RiggsFolly    schedule 07.06.2016
comment
Только, чтобы вы могли получить больше информации о WITH ROLLUP: dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html   -  person Mario Chueca    schedule 07.06.2016
comment
@Rich, мой ах, хе-хе Извините за этого шефа.. . ;-)   -  person Funk Forty Niner    schedule 07.06.2016
comment
@RiggsFolly Я хотел бы иметь возможность показать все строки ссылок с их оценкой, а затем с общей оценкой в ​​​​конце.   -  person Rich    schedule 07.06.2016
comment
Тогда у @splash58 есть ответ, и он такой простой   -  person RiggsFolly    schedule 07.06.2016
comment
Да, WITH ROLLUP действительно создает запись в конце с суммой всех общих баллов, вот и все @splash58   -  person Rich    schedule 07.06.2016
comment
я не сомневался в этом   -  person splash58    schedule 07.06.2016


Ответы (1)


Как насчет подзапроса? Это будет выглядеть примерно так:

SELECT x.user_id, SUM(overall_score) AS user_score
FROM (
    SELECT *, SUM(v.vote_score) AS overall_score 
    FROM mdl_link_critic_links l 
    JOIN mdl_link_critic_votes v on l.id = v.link_id 
    GROUP BY l.id
) AS x
GROUP BY x.user_id;
person Francesco Casula    schedule 07.06.2016