The WITH clause is here just to generate some sample data and, as such, it is not a part of the answer.
Sample data:
WITH
subject AS
(
Select 1 "SUBJ_ID", 'Software Engineering' "SUBJ_NAME", 'A1' "SUBJ_CODE", 11 "STAFF_ID" From Dual Union All
Select 2 "SUBJ_ID", 'Computer Programming' "SUBJ_NAME", 'A2' "SUBJ_CODE", 12 "STAFF_ID" From Dual Union All
Select 3 "SUBJ_ID", 'Regenerative Cybernetics' "SUBJ_NAME", 'A3' "SUBJ_CODE", 13 "STAFF_ID" From Dual
),
mark AS
(
Select 61 "VALUE", 1 "SUBJ_ID", 101 "STUDENT_ID" From Dual Union All
Select 65 "VALUE", 2 "SUBJ_ID", 101 "STUDENT_ID" From Dual Union All
Select 74 "VALUE", 3 "SUBJ_ID", 101 "STUDENT_ID" From Dual Union ALL
Select 72 "VALUE", 1 "SUBJ_ID", 102 "STUDENT_ID" From Dual Union All
Select 69 "VALUE", 2 "SUBJ_ID", 102 "STUDENT_ID" From Dual Union All
Select 66 "VALUE", 3 "SUBJ_ID", 102 "STUDENT_ID" From Dual Union ALL
Select 91 "VALUE", 1 "SUBJ_ID", 103 "STUDENT_ID" From Dual Union All
Select 67 "VALUE", 2 "SUBJ_ID", 103 "STUDENT_ID" From Dual Union All
Select 70 "VALUE", 3 "SUBJ_ID", 103 "STUDENT_ID" From Dual
)
If you need just subject name and minimum value then you don't have to use nested query. Also, in your question, ordering should be on subject name descending but in your required answer the order is by minimum value descending.
Hope this could help you get it done:
Select
s.SUBJ_NAME "SUBJ_NAME",
Min(m.VALUE) "MIN_MARK"
From
MARK m
Inner Join
SUBJECT s ON(m.SUBJ_ID = s.SUBJ_ID)
Where
s.SUBJ_NAME = 'Software Engineering'
OR
s.SUBJ_NAME = 'Computer Programming'
Group By
s.SUBJ_NAME
Order By
s.SUBJ_NAME DESC
... resulting as:
-- R e s u l t :
--
-- SUBJ_NAME MIN_MARK
-- ------------------------ ----------
-- Software Engineering 61
-- Computer Programming 65
Better way of filtering that would end up with the same result (if you know IDs) is:
Where
s.SUBJ_ID IN(1, 2)