gpt4 book ai didi

sql - 总和减去最小值的平均值

转载 作者:行者123 更新时间:2023-12-01 01:31:41 24 4
gpt4 key购买 nike

我有一个 SQL 语句,用于获取不同事件类型(家庭作业、测验等)的成绩,如果该类型的分数最低,则它会下降,否则,它仍然存在。错误如下以及 SQL 代码。

SELECT     Student.firstName, Student.lastName, 'Grades' =
CASE
WHEN Grades.activityType = 'Homework' THEN
CASE WHEN Policy.drop_hw = 1 THEN
(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

FROM ...
以下是我收到的错误:
- Cannot perform an aggregate function on an expression containing an aggregate or a subquery.
- Column 'Policy.drop_hw' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

最佳答案

查看分析函数。 ( SO questionOracle documentation )。

像这样的东西:

AVG(Grades.grade) OVER (PARTITION BY Grades.student_id) AS avg_of_grades

和:
(AVG(SUM(Grades.grade) - MIN(Grades.grade))) OVER (PARTITION BY Grades.student_id) AS avg_grades_with_drop

使用适合您情况的任何内容设置分区;我们无法判断,因为您省略了 FROM ...在你的例子中。

然后,您可以在 CASE 内的任何计算中使用这些列别名。陈述。

关于sql - 总和减去最小值的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4338684/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com