数据库实验3
Posted SmallCuteMonkey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库实验3相关的知识,希望对你有一定的参考价值。
文章目录
题目:
1.统计各科的及格率
select cs.CNO as '科目编号',
cs.cn as '科目',
count(1) as '总数', -- count(1) 表示总数
sum(case when s.SCORE>=60 then 1
else 0 end)as '及格数',
(sum(case when s.SCORE>=60 then 1 else 0 end)/count(1))*100 as '及格率'
from course cs
LEFT JOIN score s
on cs.CNO=s.CNO
group by cs.CNO,cs.cn
2. 语文成绩第三名的各科成绩
select c.CN,e.SCORE
from course c,score e
where c.CNO=e.CNO
and e.scode = (
select scode from
course c,score e
where
c.CNO=e.CNO
and c.CN="语文"
ORDER BY e.SCORE DESC
limit 2,1
)
3. 找出计算机系有什么科目的成绩有两人以上考到90+
- 查询出来所有的90+的人,在进行相关的学科分组,统计人数>2
- 这样临时表建立的太多
select * from(
select count(*) as num,t.CN from (
select
c.CN,e.SCORE FROM
dept d,course c,score e
where c.CNO=e.CNO
and d.CN like "计算机"
)t where
t.SCORE>=90
group by t.CN
) t1
where num>=2
4. 查询学生成绩分最高的人
select *
from score c
where not exists ( select 1 from score c1 where c1.cno = c.cno and c.SCORE < c1.SCORE);
5. 将学生成绩打平展示。显示为学生姓名,语文多少分,数学多多少分,无成绩的也要展现出来
select s.sname,c.CN,e.SCORE
FROM
students s,score e,course c
where e.scode=s.scode
and e.CNO=c.CNO
count(*),count(1),count(列名的区别)
count(1)用1 代表代码行,统计结果不会忽略null的值
count(*) 也是表示所有的行数,不会忽略null的值
count(列名)统计列名的个数,会忽略null
以上是关于数据库实验3的主要内容,如果未能解决你的问题,请参考以下文章
20155201 李卓雯 《网络对抗技术》实验一 逆向及Bof基础