如何将SQL CASE语句与另一个字段的DISTINCT组合

我需要为学生提供结果。我有一个MySQL查询提供学生列表,然后使用SELECT子查询根据来自不同学生活动的几个不同表给出结果。对于一个子查询,我需要可以使用CASE语句计算的总分,但是这是根据所有结果计算得出的,由于学生经常重复进行测试以获得更好的结果,因此我需要基于每次测试的最佳结果。 GROUP BY在SELECT子查询上不起作用。我以为DISTINCT是我的解决方案,但我不确定是否有可能在一个CASE语句基于另一个字段(百分比)的同时在一个字段(TestID)上执行DISTINCT,尽管我认为如果那样的话,它将需要为MAX(百分比)然后可能。我看到了类似的示例,但它们似乎涉及使用“ Then”提供DISTINCT字段,而我的示例是使用“ Then”提供积分。我已将SQL简化为问题子查询,该子查询在下面产生结果,但未根据每个TestID的最佳百分比生成“测试点”:

SELECT Students.UserID, Students.Name,  
(SELECT COALESCE(SUM(Case When percentage >= '90' Then '2'
When percentage < '90' AND percentage > '0' Then '1'
Else '0'
END),0)
FROM TestResults
WHERE Students.UserID = TestResults.UserID) AS testpoints 
FROM Students
ORDER BY testpoints DESC

学生表是这样的:

UserID   Name
1     David
2     Daisy
3     Sheila 

TestResults是这样的:

ID   UserID   TestID   percentage
1     1       1        100
2     1       2        100
3     2       1        100
4     2       1        80
5     2       2        100
6     3       2        100

上面的查询提供了以下结果,该结果计算了同一测试的多次尝试:

UserID   Name     testpoints
1        David       4
2        Daisy       3  
3        Sheila      4 

我想要得到的是删除了重复项并根据每个测试的最大百分比得出的分数:

UserID   Name     testpoints
1        David       4
2        Daisy       2  
3        Sheila      2 

如果有人可以提供帮助,我将非常感谢...