一句sql语句问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 03:01:54
查询何光能选的软件工程的学分占他所选课程总学分的百分比

我的解答:
Select 学分/sum(学分)*100 from 个人信息,选课信息
Where 个人信息.学号=选课信息.学号 and 个人信息.姓名='何光能' and
选课信息.课程名='软件工程'

报错--
消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 '选课信息.学分' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
2楼的报错--消息 8120,级别 16,状态 1,第 1 行
选择列表中的列 '选课信息.学分' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。

1楼的输出虽然是正确的,可是 小弟尚属初级..大虾可否不用case,when,then这些条件语句啊```
ok?

Select 个人信息.学号,sum(学分*case 选课信息.课程名 when '软件工程' then 1 else 0 end)/sum(学分)*100 from 个人信息,选课信息
Where 个人信息.学号=选课信息.学号 and 个人信息.姓名='何光能' group by 个人信息.学号;

那就使用子查询:
Select a.学号,a.学分/b.学分*100 from

(Select 个人信息.学号 学号,sum(学分) 学分 from 个人信息,选课信息
Where 个人信息.学号=选课信息.学号 and 个人信息.姓名='何光能' and 选课信息.课程名='软件工程' group by 个人信息.学号) a,
(Select 个人信息.学号 学号,sum(学分) 学分 from 个人信息,选课信息
Where 个人信息.学号=选课信息.学号 and 个人信息.姓名='何光能' group by 个人信息.学号) b

where a.学号=b.学号;

使用聚集函数一定要分组

Select 学分/sum(学分)*100 from 个人信息,选课信息
Where 个人信息.学号=选课信息.学号 and 个人信息.姓名='何光能' and
选课信息.课程名='软件工程'
group by 个人信息.学号