我想要做的是在我的数据库中获得仅得分最高的SUM并按类别排序
这是我的数据库表
question_id score1 score2 score3 category_id
----------- ------ ------ ------ -----------
1 4 3 1 1
2 5 2 9 2
3 7 2 1 1
4 1 5 6 2
我想要的结果
it is only get the highest score to add
category_id 1 = score 11 (7+4)
category_id 2 = score 15 (9+6)
任何想法如何使用php或mysql解决它?
感谢
答案 0 :(得分:3)
你需要GREATEST
功能;它返回了各自组中所有金额中最大的一笔。
SELECT category_id, GREATEST(SUM(score1), SUM(score2), SUM(score3))
FROM mytable
GROUP BY category_id;
顺便说一句,这与计算每行每个最大值的总和不同。为此,您需要撤消GREATEST
和SUM
。
答案 1 :(得分:2)
您可以使用GREATEST
查找列的最大值,然后使用SUM
;
如果您想要每个问题的最高得分总和,或者总得分最高,那么您还不是很明确,所以我会添加两个:)
这将为您提供每个问题得分最高的总和,也就是说,如果得分1在问题1上最高而得分2在问题2中最高,则将它们相加;
SELECT category_id,SUM(GREATEST(score1,score2,score3))
FROM questions
GROUP BY category_id
这将为您提供得分1,得分2和得分3的最高总得分,即如果得分1的总得分高于得分2的总数,则将返回得分1的总和;
SELECT category_id, GREATEST(SUM(score1),SUM(score2),SUM(score3))
FROM questions
GROUP BY category_id
答案 2 :(得分:1)
我认为正确的查询是:
SELECT category_id, greatest(sum(score_1), sum(score_2), sum(score_3))
from scores
group by category_id;
这会给你每列最高的分数。
但是,你可以做到
SELECT category_id, sum(greatest(score_1,score_2,score_3))
from scores
group by category_id;
如果你想要每行的最大值,然后求它们。
中查看小提琴答案 3 :(得分:0)
这可能会有所帮助,
SELECT SUM(score1+score2+score3) AS score,
category_id FROM table GROUP BY question_id ORDER BY score desc