数据库实验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+

  1. 查询出来所有的90+的人,在进行相关的学科分组,统计人数>2
  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基础

JSP 设计教师与学生不同登陆界面(带验证码)

[NTUSTISC pwn LAB 7]Return to libc实验(puts泄露libc中gadget片段定位)

chapter1.高通量序列实验简介:设计与生物信息学分析

缓冲区溢出漏洞实验

使用 React 实验性中继片段:缺少属性 '"$fragmentRefs"'