博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学生——成绩表查询
阅读量:6709 次
发布时间:2019-06-25

本文共 825 字,大约阅读时间需要 2 分钟。

 

一、表

学生表:student

课程表:course

成绩表:score

注:s_id不是主键,而是外键。

教师表:teacher

二、查询

1.查询所有平均分80分以上的学生

SQL:

select sname from studentwhere s_id in(     select s_id      from score x     where (select avg(score)      from score y      where x.s_id=y.s_id)>80)

分析:此查询的关键在于从成绩表score中查询平均分在80分以上的学生学号,即第2层嵌套的查询,可以看出其对成绩表score 查询了2次,最里面是从成绩表查询平均分avg(score) ,将avg(score) >80作为条件,再查对应的学号s_id,得到这个s_id,就可以利用in从学生表查询结果了。

结果:

改进:查询平均成绩大于80分的学生姓名以及平均成绩。1.使用join连接包含聚合函数的结果;2.使用having作为筛选聚合函数的条件

注:对于筛选聚合函数用having,不能用where

SQL:

select sname,avg(score) as average from student join scoreon student.s_id=score.s_idgroup by snamehaving avg(score)>80

 

2.查询各科的最高分、最低分及平均分

SQL:

SELECT c.Cname, MAX(s.Score) AS Max, MIN(s.Score) AS Min, AVG(s.Score) AS Average   FROM Course c JOIN score s ON c.C_id = s.C_id   GROUP BY c.Cname

结果:

 

 

2.查询各科成绩的最高分,及对应的学生姓名,课程名称:

 

转载地址:http://suilo.baihongyu.com/

你可能感兴趣的文章
lombok系列2:lombok注解详解
查看>>
大数据风控 ——互联网消费金融的必由之路
查看>>
HBase-1.2.4 CombinedBlockCache和InclusiveCombinedBlockCache
查看>>
一个高性能、轻量级的分布式内存队列系统--beanstalk
查看>>
WebRTC学习资料大全
查看>>
C++ auto_ptr智能指针的用法
查看>>
gcc指定头文件路径及动态链接库路径
查看>>
Linux上使用Qt Creator进行C/C++开发
查看>>
自己平常开发常用的jq方法
查看>>
实时查看mysql运行状态
查看>>
android 7.1悬浮窗系统权限问题
查看>>
数据切分——Mysql分区表的管理与维护
查看>>
混合云使用不能盲目:学习最佳实践是王道
查看>>
通过实例模拟ASP.NET MVC的Model绑定的机制:集合+字典
查看>>
调度器之 Kubernetes
查看>>
PDMS RVM TO 3DXML - RvmTranslator6.0
查看>>
《数学与泛型编程:高效编程的奥秘》一3.2 筛选素数
查看>>
不想被攻击,5款便携式反病毒和反恶意软件帮到你
查看>>
【投资人不懂AI】为什么说AI创业不是4、5个人的团队就能搞定的事
查看>>
ARM公司收购Apical,欲致力推进“目联网”技术
查看>>