栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

数据库实验3

数据库实验3

文章目录
    • 题目:
    • 1.统计各科的及格率
    • 2. 语文成绩第三名的各科成绩
    • 3. 找出计算机系有什么科目的成绩有两人以上考到90+
    • 4. 查询学生成绩分最高的人
    • 5. 将学生成绩打平展示。显示为学生姓名,语文多少分,数学多多少分,无成绩的也要展现出来
    • count(*),count(1),count(列名的区别)

题目: 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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336323.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号