У меня есть следующий код:HAVING MAX (COUNT (*)) не работает
SELECT e.Student_ID, s.Name, s.Surname, Result_IS, COUNT(*)
FROM Students s
LEFT JOIN Exams e
ON e.Student_ID=s.Student_ID
WHERE Result_IS='Negative'
GROUP BY e.Student_ID, s.Name, s.Surname, Result_IS
HAVING COUNT(*)=
(
SELECT MAX(COUNT(*)) FROM Exams
WHERE Student_ID=e.Student_ID
AND Result_IS='Negative'
GROUP BY e.Student_ID, s.Name, s.Surname, Result_IS
)
У меня проблема с HAVING COUNT(*)
, который должен выбрать строку, в которой COUNT(*)
дал самый большой результат, но вместо этого он просто дать мне выход первого выбора, который является следующим:
Я пытался все подобные вещи, но ничего не работает, чтобы выбрать строку, где граф является максимальным.
Просто дайте мне подсказку, пожалуйста, в каком направлении я должен двигаться отсюда, и что не так с кодом.
Спасибо, но я знал, что этот метод уже и я не хотел, чтобы сделать это таким образом. Кстати, пока я выяснил, как это сделать. Но спасибо в любом случае :) –
Вы должны написать свой ответ здесь для сообщества. – Wjdavis5
PL/SQL - это процедурный язык Oracle. Вероятно, вы хотели сказать «Oracle SQL». А для Oracle вы должны быть осторожны в смешении 'rownum' и' order by' в том же запросе, потому что фильтр 'rownum' применяется до *' order by', поэтому результаты будут неверными. Вместо этого вам нужно что-то вроде: 'select * from (subquery-with-order-by), где rownum = 1'. – sstan