#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);