Запрос о агрегатной функции oracle sql

#sql #oracle #function #aggregate

#sql #Oracle #функция #агрегат

Вопрос:

Я начал изучать базу данных sql только с 1 недели, и у меня есть запрос о агрегатной функции.. Я хочу использовать две оценки добавления учащихся и хочу отсортировать их итоги от минимального до максимального.

Я пробовал

 SELECT student_name,min(sum(marks))
FROM STUDENTS a,STUDENT b
WHERE a.student_name=b.student_name
GROUP BY student_name
  

Но я получил ошибку в первой строке
Не является групповой функцией с одной группой

пожалуйста, скажите мне, каким будет правильный код..

Ответ №1:

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

 Select Student_name, min(marks)
from (
SELECT student_name,sum(marks) marks
FROM STUDENTS a,STUDENT b
WHERE a.student_name=b.student_name
GROUP BY student_name)
GROUP BY student_name
  

Комментарии:

1. Да .. Работает.. Спасибо .. 🙂 Можете ли вы рассказать мне, как вы это сделали?? Я имею в виду, можете ли вы это объяснить ..?? Plzzzz..

2. Насколько я знаю, вы не можете применять обе функции одновременно… итак, используя подзапрос, мы сначала извлекаем sum, а затем min…

3. Такой опции нет ..! Где эта опция??

Ответ №2:

Похоже, вам не нужен a join для этого запроса, если вы не хотите фильтровать. (И, если вы используете join , затем используйте явный синтаксис соединения). Предполагая marks , что это из второй таблицы, я думаю, вы хотите что-то вроде:

 SELECT s.student_name, sum(b.marks)
FROM STUDENT s
GROUP BY s.student_name
ORDER BY sum(b.marks);