急求帮助???

ssyycan 2003-01-04 05:24:41
在一个(3个表)数据库中,统计每个班每个课程的平均成绩,并按照平均成绩降序。
如果平均成绩相同时,按班级升序排序。(3个表如下:)

学生表
学号 姓名 班级
1 王 9901
2 老李 9902
3 小张 9903
4 成 9905
5 蜜柑 9905
7 衣 9901
8 舅究 9904

课程表
课程编号 课程名称
001 语文
002 数学
003 英语
004 其他

成绩表
学号 课程编号 成绩
1 001 100
2 001 90
3 002 40
4 003 78
5 004 86
6 001 93
7 002 59
8 003 79
...全文
34 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pengdali 2003-01-05
  • 打赏
  • 举报
回复
呵呵!改一种写法:
select cast(avg(CAST(成绩 as decimal)) as decimal(9,1)) 平均成绩,课程编号,班级 from 成绩表 join 学生表 on 学生表.学号=成绩表.学号 group by 课程编号,班级 order by 平均成绩 DESC,班级
ssyycan 2003-01-05
  • 打赏
  • 举报
回复
谢了
还有其他的方法吗?
这题是考试题啦的。
microyzy 2003-01-04
  • 打赏
  • 举报
回复
这是支持小数的:
select cast(avg(CAST(成绩 as decimal)) as decimal(9,1)) 平均成绩,课程编号,班级 from 成绩表,学生表 where 学生表.学号=成绩表.学号 group by 课程编号,班级 order by 平均成绩 DESC,班级
microyzy 2003-01-04
  • 打赏
  • 举报
回复
select avg(成绩) 平均成绩,课程编号,班级 from 成绩表,学生表 where 学生表.学号=成绩表.学号 group by 课程编号,班级 order by 平均成绩 DESC,班级
microyzy 2003-01-04
  • 打赏
  • 举报
回复
select avg(成绩) 平均成绩,课程编号,班级 from 成绩表,学生表 where 学生表.学号=成绩表.学号 group by 课程编号,班级
microlong 2003-01-04
  • 打赏
  • 举报
回复
很简单呀!视图连接表,然后用ORDER BY 排序

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧