sql - Average of Sum minus Minimum -
hey guys, have sql statement grabs grades of different activity types (homework, quiz, etc), , if there's drop lowest type, drops, else, remains. errors below sql code.
select student.firstname, student.lastname, 'grades' = case when grades.activitytype = 'homework' case when policy.drop_hw = 1 (avg(sum(grades.grade) - min(grades.grade))) * (policy.homework / 100) else (avg(grades.grade) * (policy.homework / 100)) end end, course.coursenum, course.sectnum, grades.activitytype ... here errors i'm getting:
- cannot perform aggregate function on expression containing aggregate or subquery. - column 'policy.drop_hw' invalid in select list because not contained in either aggregate function or group clause.
look analytical functions. (so question, oracle documentation).
something this:
avg(grades.grade) on (partition grades.student_id) avg_of_grades and:
(avg(sum(grades.grade) - min(grades.grade))) on (partition grades.student_id) avg_grades_with_drop set partitioning whatever makes sense in case; can't tell since omitted from ... in example.
you can use column aliases in calculations inside case statement.
Comments
Post a Comment