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分中得分最高)。如果你能改变这一点并更新预期结果,我会更好,因为我看到了两种不同的方式来回答你的问题。我有点失望,没有人建议将标准化作为这个问题的答案。