这是我想要完成的简化版本。假设我有一个人表和一个测试表。每个测试都有 2 个与之相关的分数,每个人可以有 0,1 或多个测试
人
- PersonId(PK)
- PersonName
测试
- testId (PK)
- PersonId (FK)
- test1Score
- test2Score
我试图得到一个结果集,它给我一个排序的人员列表和平均 testScores。这就是我正在做的
SELECT GROUP_CONCAT( CASE
WHEN( tests.test1Score > 0 )
THEN( ( tests.test1Score + tests.test2Score)/2 )
ELSE( 99999999 ) END) as averageScore, person.PersonName
FROM person
JOIN tests
ON person.personId = tests.personId
GROUP BY person.personId
ORDER BY averageScore
发生的事情是 group_concat 返回一个字符串并按我的顺序执行结果是这样的
人名1 | 5,6
人名2 | 51,60
人姓名3 | 6、60
我知道我必须先按单个计算字段排序,然后按 group_concatenated 值排序,但不知道该怎么做。
任何帮助,将不胜感激