Member 3864348 Ответов: 2

Запрос Oracle, чтобы найти максимум общего числа


Привет,
У меня есть приведенная ниже таблица студентов с такими строками

student_id  subject_id     Mark
1               1                 60
1               2                 55
1               3                 70
2               1                 80      
2               2                 40
2               3                 50
3               1                 30      
3               2                 40
3               3                 60




Мне нужно найти student_id, который получил максимальное количество баллов.Не мог бы кто-нибудь помочь?

Спасибо

Что я уже пробовал:

Я попробовал использовать max (sum), но не получил правильного результата.

2 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Что-то вроде-

SELECT MAX(TotalMarks) AS TotalMarks
FROM (
    SELECT student_id,SUM(Mark) AS TotalMarks
    FROM Student
    GROUP BY student_id
) AS TBL

Может быть, есть лучший способ сделать это, но он должен дать вам желаемый результат.

Надеюсь, это поможет :)


Рейтинг:
0

Wendelius

Это можно сделать несколькими способами. Один довольно простой способ-использовать запрос для группировки и сортировки учеников на основе их оценок, например

SELECT a.Student_ID, SUM(a.Mark) AS Total
      FROM Student a
      GROUP BY a.Student_ID
      ORDER BY Total DESC

Это даст вам
STUDENT_ID   TOTAL
----------   -----
1            185
2            170
3            130

Теперь, чтобы выбрать первый, вы можете использовать результат в качестве встроенного представления и ограничить количество строк до 1. Например
SELECT *
FROM (SELECT a.Student_ID, SUM(a.Mark) AS Total
      FROM Student a
      GROUP BY a.Student_ID
      ORDER BY Total DESC
     ) b
WHERE RowNum <= 1;