これが私が達成しようとしていることの単純化されたバージョンです。人のテーブルとテストのテーブルがあるとします。各テストには2つのスコアが関連付けられており、各人は0、1、または多数のテストを行うことができます
person
-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は文字列を返し、次のような結果で注文を実行します
personName1 | 5,6
personName2 | 51,60
personName3 | 6、60
最初に個々の計算フィールドで並べ替えてから、group_concatenated値で並べ替える必要があることはわかっていますが、その方法がわかりません。
助けていただければ幸いです