第一周 遇到的问题

SQL
4.1 查有成绩的学生信息
这个问题就有意思了,感觉是和前面的“查询SC表中存在成绩的学生信息”重复了。但是查了资料是有区别的,依然不是很明白。
7.查询没有学全所有课程的同学的信息
这个问题讲数据库的时候有一道类似的题目:“查询选修了所有课程的学生信息”,书上用的是exists语句,但是我不太理解。这道题我觉得也可以拆分表,拆成三个表,然后进行连接,就可以先得到学全所有课程的同学,再求不在这个集合中的学生即可。
但是我的这个解法有弊端,一旦课程数量多起来,那需要连接的表也就特别多,所以还是需要一个更加精简的算法。
9.查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息
此题乍一看跟上一题差不多,但其实条件已经由存在变成了完全包含。也就是我们不仅要与01同学有交集,而且要与他完全一致。
试过之后发现只能查出与他所学课程有交集的学生,但无法查询与他完全一致的学生信息。
15.按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺
这里不懂显示排名要怎么操作。查阅资料显示,排名可以由聚合函数count()来完成。
根据查到的资料显示,这里要用到自连接,然后具体代码如下:
select a.cid,a.sid,a.score,count(b.score)+1 as rank
from sc as a
left join sc as b
on a.score<b.score and a.cid=b.cid
group by a.cid,a.sid,a.score
order by a.cid,rank asc;
但是我不明白为什么条件是on a.score<b.score and a.cid=b.cid,而且为什么是count(b.score)+1可以表示排名
再一个就是个人感觉group by子句中的a.score没有必要
还有就是我尝试将group by a.cid,a.sid,a.score order by a.cid,rank asc;这两行代码屏蔽掉,结果如下图
在这里插入图片描述
感觉对这个结果不太理解
所以我又将group by子句执行,发现结果已经变得很清晰了,如下图
在这里插入图片描述
在group by 子句执行后就能明显的发现已经离最终结果不远了,但我还是不明白为什么group by 前后的结果差异这么大
15.1 按各科成绩进行排序,并显示排名, Score 重复时合并名次
16.查询学生的总成绩,并进行排名,总分重复时保留名次空缺
16.1 查询学生的总成绩,并进行排名,总分重复时不保留名次空缺
同上,查了资料,但是依然不懂。。。
18.查询各科成绩前三名的记录
这个问题本来打算用top,但是一直报错,后来才知道top是sql sever里的用法,mysql里面要用limit语句,但是这过程中还是有一些问题。
在这里插入图片描述
这个语句查不出结果,我猜是因为没有对查询进行分组,所以加了group by 子句,但是老是报错,加在哪里都不对。下图是其中一种情况:
在这里插入图片描述
HTML CSS
连接不成功,css中做改变html无变化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值