Php 如何获得mysql中最高分数的总和并按类别排序?
我想做的是得到数据库中最高分数的总和,然后按类别排序 这是我的数据库表Php 如何获得mysql中最高分数的总和并按类别排序?,php,mysql,Php,Mysql,我想做的是得到数据库中最高分数的总和,然后按类别排序 这是我的数据库表 question_id score1 score2 score3 category_id ----------- ------ ------ ------ ----------- 1 4 3 1 1 2 5 2 9 2 3 7 2 1
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解决这个问题吗
谢谢我认为正确的查询应该是:
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;
如果您想要每行的最大值,然后求和
您可以在中查看小提琴,我认为正确的查询应该是:
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;
如果您想要每行的最大值,然后求和
您可以在中查看小提琴,这可能会有所帮助
SELECT SUM(score1+score2+score3) AS score,
category_id FROM table GROUP BY question_id ORDER BY score desc
这可能会有帮助
SELECT SUM(score1+score2+score3) AS score,
category_id FROM table GROUP BY question_id ORDER BY score desc
你需要这个函数;它返回相应组的所有总和中最大的一个
SELECT category_id, GREATEST(SUM(score1), SUM(score2), SUM(score3))
FROM mytable
GROUP BY category_id;
顺便说一句,这与计算每行最大值之和不同。为此,您需要反转最大值
和求和
您需要该函数;它返回相应组的所有总和中最大的一个
SELECT category_id, GREATEST(SUM(score1), SUM(score2), SUM(score3))
FROM mytable
GROUP BY category_id;
顺便说一句,这与计算每行最大值之和不同。为此,您需要反转
maxist
和SUM
您可以使用maxist
查找列的最大值,然后对其进行SUM
你没有很清楚地表明你想要的是每个问题的最高分数之和,还是总体上的最高分数,所以我将两者相加:)
这将给出每个问题的最高分数之和,也就是说,如果问题1的分数1最高,问题2的分数2最高,那么它们将被求和
SELECT category_id,SUM(GREATEST(score1,score2,score3))
FROM questions
GROUP BY category_id
相反,这将为您提供score1、score2和score3的最高总分,也就是说,如果score1的总分高于score2的总分,它将返回score1的总和
SELECT category_id, GREATEST(SUM(score1),SUM(score2),SUM(score3))
FROM questions
GROUP BY category_id
.您可以使用
maxist
查找列的最大值,然后对其进行SUM
你没有很清楚地表明你想要的是每个问题的最高分数之和,还是总体上的最高分数,所以我将两者相加:)
这将给出每个问题的最高分数之和,也就是说,如果问题1的分数1最高,问题2的分数2最高,那么它们将被求和
SELECT category_id,SUM(GREATEST(score1,score2,score3))
FROM questions
GROUP BY category_id
相反,这将为您提供score1、score2和score3的最高总分,也就是说,如果score1的总分高于score2的总分,它将返回score1的总和
SELECT category_id, GREATEST(SUM(score1),SUM(score2),SUM(score3))
FROM questions
GROUP BY category_id
杰克:哦,我明白了。那么哪一个更优化,执行时间更短?@diEcho我不确定说实话。。。求和的最大值或求和的最大值;-)对我来说也一样。我想给你一个正确的分数或@joachim Laskson,因为你们两个的代码都在工作,我能做的是在给正确的分数之前检查mysql的速度:)@Oscar当然,去做:)我很想知道。
grest(分数1),SUM(分数2),SUM(分数3))
或SUM(最高)(score1,score2,score3)
@Jack:哦,我明白了。那么哪一个更优化,执行时间更短?@diEcho我不确定说实话…最大值还是最大值;-)对我来说听起来是一样的。我想给你一个正确的分数或@joachim Laskson,因为你们两个代码都在工作,我能做的是在给正确的分数之前检查mysql的速度性能:)@Oscar当然,去做:)我很想知道。我想给你正确的分数或@jack,因为你们两个的代码都在工作,我能做的是在给正确的分数之前检查mysql的速度性能:)我想给你正确的分数或@jack,因为你们两个的代码都在工作,我能做的是在给正确的分数之前检查mysql的速度性能:)奥斯卡,在你的测试代码中,最高分对应于类别(类别1在分数1中的得分始终最高,类别2在分数3中的得分始终最高)。如果你能改变这一点并更新预期结果,我会更好,因为我看到了两种不同的方式来回答你的问题。我有点失望,没有人建议将标准化作为这个问题的答案。奥斯卡,碰巧在你的测试代码中,最高分对应于类别(1类在1分中得分最高,2类在3分中得分最高)。如果你能改变这一点并更新预期结果,我会更好,因为我看到了两种不同的方式来回答你的问题。我有点失望,没有人建议将标准化作为这个问题的答案。