0

在此处输入图像描述

标记表中的数据:

VALUE      SUBJECT_ID STUDENT_ID                                                
---------- ---------- ----------                                                
    73          1          6                                                
    98          1          1                                                
    68          2          1                                                
    75          3          6                                                
    78          5          6                                                
    75          1          7                                                
    69          4          7     

我尝试了以下代码,它成功执行并给出了预期的结果,但是它无法清除一个测试用例和 IDK 为什么?

SELECT DISTINCT
    student_id,
    min(value) as MINIMUM_MARK 
FROM mark
WHERE value IN (
    SELECT
        min(value)
    FROM mark
    GROUP BY (subject_id)
)
GROUP BY (student_id)
ORDER BY MINIMUM_MARK;

预期的输出是:

STUDENT_ID MINIMUM_MARK
---------- ------------
     1       68
     7       69
     6       73
4

2 回答 2

2

您可以简单地使用group by如下:

Select student_id,
       Min(value) as minimum_marks
From marks
Group by student_id
Order by minimum_marks

干杯!!

于 2020-01-25T12:11:23.440 回答
0

我会在ROW_NUMBER这里使用:

WITH cte AS (
    SELECT m.*, ROW_NUMBER() OVER (PARTITION BY STUDENT_ID ORDER BY "VALUE" DESC) rn
    FROM mark
)

SELECT STUDENT_ID, MARK
FROM cte
WHERE rn = 1
ORDER BY MARK;
于 2020-01-25T11:16:05.483 回答