SQL-запрос - база данных студентов - PullRequest
0 голосов
/ 25 февраля 2012

Я работаю над проектом базы данных для колледжа.Схема выглядит следующим образом:

Student       (StudentID, FName,LName, ....)  
StudentMarks  (StudentID,SubjectID, Marks)  
Subject       (SubjectID, CourseID, SubjectName)  

Как мне написать запрос для получения SubjectID, в котором студент, скажем, ENG1000, набрал максимальные оценки.

Пожалуйста, помогите мне в решении этой.

Ответы [ 6 ]

1 голос
/ 25 февраля 2012

Я не хочу давать вам полное решение, так как это не лучший способ обучения:)

Если вам нужен только SubjectID и у вас уже есть StudentID, вы можете написать заявление, используя только таблицу StudentMarks, не присоединяясь ни к одному из других. Подумайте, какие агрегатные функции вы можете использовать, и обратите внимание на:

  • Как вы ограничиваете / группируете результаты по StudentID
  • Получение максимального значения из этого набора

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

1 голос
/ 25 февраля 2012
SELECT SubjectID
FROM StudentMarks
WHERE Marks = (SELECT MAX(Marks) FROM StudentMarks);
0 голосов
/ 10 сентября 2013

Я думаю, что это будет хорошо

SELECT SubjectID
FROM StudentMarks
WHERE Marks = (SELECT MAX(Marks)
FROM StudentMarks) AND studentID = 'ENG1000' ;
0 голосов
/ 25 февраля 2012
SELECT subjectID
FROM StudentMarks
WHERE studentID = 'ENG1000'
ORDER BY mark DESC
LIMIT 1;
0 голосов
/ 25 февраля 2012

Мне пришлось сделать несколько предположений: ENG1000 - это StudentID, а оценка 'max' - 100 ...

SELECT SubjectID FROM StudentMarks
WHERE StudentMarks.StudentID = ENG1000
AND StudentMarks.Marks = 100
0 голосов
/ 25 февраля 2012

Попробуйте это:

SELECT
    StudentID , SubjectID ,Marks
    ,DENSE_RANK() OVER (PARTITION BY StudentID ORDER BY Marks DESC) AS score_rank
    INTO #temp
FROM StudentMarks

SELECT 
        StudentID, SubjectID, Marks
FROM    #temp 
WHERE   score_rank = 1

DROP TABLE #temp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...