Sql 计算一行的和并除以另一行的和。Oracle视图/查询
这是我在这里的第一个问题,请容忍我。我的Oracle数据库中有两个表,如下所示:Sql 计算一行的和并除以另一行的和。Oracle视图/查询,sql,oracle,database-design,Sql,Oracle,Database Design,这是我在这里的第一个问题,请容忍我。我的Oracle数据库中有两个表,如下所示: 模块带字段: 模块代码如INF211 模块标题如信息技术 学分eg.20 module\u progress带字段: 学生id例如STU1 模块代码如INF211 module\u year例如1 模块百分比如65 每个学生每年学习5个模块 因此,如果可能的话,这就是我想要将所有这些放在一个查询/视图中的内容: 查找特定学生的模块百分比总和 根据每个模块的模块百分比查找每个模块的所有学分之和 将模块百分比之
模块
带字段:
如INF211模块代码
如信息技术模块标题
eg.20学分
module\u progress
带字段:
例如STU1学生id
如INF211模块代码
例如1module\u year
如65模块百分比
可以这样做吗?真的需要第一步吗?ie对于一个给定的学生和模块,模块的进度是否有超过一个记录?一个学生可以有任意多个模块,只要它们加起来总共120学分。每个模块价值10或20学分,因此您最多可以拥有12个模块。我需要做以下几项来计算平均分数。每个模块=(模块百分比/10)*学分。将结果之和除以积分之和,再乘以100。这有意义吗?我该怎么做呢?因为,正如在原始帖子中所说,百分比存储为
65
,而不是0.65
,我认为你应该将它们除以100。但是因为它也需要将除法的结果乘以100,所以最终,我认为,你只需要删除*100.0
。这很有魅力,但我意识到了一个重要的问题。让我解释一下。。。每个模块可以是10或20学分。每年一个学生有足够的模块来加上120个学分,所以我需要做以下计算来获得正确的年平均成绩。。。我需要为每个模块做以下操作=(模块百分比/10)*学分,然后得到其总和,除以120。这有意义吗?我该怎么做呢???@JMoorhouse:你能提供一些示例数据和所需的结果集吗?我现在已经弄明白了。我会在周二晚上发布答案,因为那个是我的截止日期,我不希望人们可能复制我的解决方案,并让我在uni遇到麻烦。谢谢你的耐心和时间。你帮了很多忙:)
SELECT student_id,
SUM(credits * module_percent) / SUM(credits) * 100.0
FROM module_progress mp
JOIN modules m
ON m.module_code = mp.module_code
GROUP BY
student_id