2、查询“生物”课程比“物理”课程成绩高的所有学生的学号;

select a.student_id from(select * from score where course_id = (select course_id from course where course_name = '生物'))as a inner join(select * from score where course_id = (select course_id from course where course_name = '物理'))as b on a.student_id = b.student_id and a.score_number > b.score_number;

3、查询平均成绩大于60分的同学的学号和平均成绩;

select student_id,avg(number) from score  group by student_id having avg(number) > 60

4、查询所有同学的学号、姓名、选课数、总成绩;

select a.student_id,a.student_name,count(course_id),ifnull(sum(score_number),0) from student as a left join score as b on a.student_id = b.student_id group by a.student_id

5、查询姓“马”的老师的个数;

select count(*) from teacher where teacher_name like '马%'

6、查询没学过“俞敏洪”老师课的同学的学号、姓名;

select student_id,student_name from student where student_id not in (select student_id from score natural join course where teacher_id = (select teacher_id from teacher where teacher_name = '马化腾'))

7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

select student_id,student_name from student where student_id in (select  student_id from score group by student_id having group_concat(course_id) like '1,2%') ;

8、查询学过“马云”老师所教的所有课的同学的学号、姓名;

9、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

10、查询有课程成绩小于60分的同学的学号、姓名;

11、查询没有学全所有课的同学的学号、姓名;

12、查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;

21、查询每门课程的任课老师、课程名称和课程平均分,并按照分数从高到低排序;

23、查询出只选修了一门课程的全部学生的学号和姓名;

24、查询男生、女生的人数;

25、查询姓“张”的学生名单;

26、查询同名同姓学生名单,并统计同名人数;

27、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;

28、查询平均成绩大于85的所有学生的学号、姓名和平均成绩;

29、查询课程名称为“数学”,且分数低于60的学生姓名和分数;

30、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;

31、查询选修了课程的学生人数

32、查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;

33、查询各个课程及相应的选修人数;

34、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;

35、查询每门课程成绩最好的前两名;

36、查询至少选修两门课程的学生学号;

37、查询全部学生都选修的课程的课程号和课程名;

39、查询两门以上不及格课程的同学的学号及其平均成绩;

2、查询“生物”课程比“物理”课程成绩高的所有学生的学号;

思路:

获取所有有生物课程的人(学号,成绩) - 临时表

获取所有有物理课程的人(学号,成绩) - 临时表

根据【学号】连接两个临时表:

学号  物理成绩   生物成绩

然后再进行筛选

select A.student_id,sw,ty from

(select student_id,num as sw from score left join course on score.course_id = course.cid where course.cname = '生物') as A

left join

(select student_id,num  as ty from score left join course on score.course_id = course.cid where course.cname = '体育') as B

on A.student_id = B.student_id where sw > if(isnull(ty),0,ty);

3、查询平均成绩大于60分的同学的学号和平均成绩;

思路:

根据学生分组,使用avg获取平均值,通过having对avg进行筛选

select student_id,avg(num) from score group by student_id having avg(num) > 60

4、查询所有同学的学号、姓名、选课数、总成绩;

select score.student_id,sum(score.num),count(score.student_id),student.sname

from

score left join student on score.student_id = student.sid

group by score.student_id

5、查询姓“李”的老师的个数;

select count(tid) from teacher where tname like '李%'

select count(1) from (select tid from teacher where tname like '李%') as B

6、查询没学过“叶平”老师课的同学的学号、姓名;

思路:

先查到“李平老师”老师教的所有课ID

获取选过课的所有学生ID

学生表中筛选

select * from student where sid not in (

select DISTINCT student_id from score where score.course_id in (

select cid from course left join teacher on course.teacher_id = teacher.tid where tname = '李平老师'

)

)

7、查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

思路:

先查到既选择001又选择002课程的所有同学

根据学生进行分组,如果学生数量等于2表示,两门均已选择

select student_id,sname from

(select student_id,course_id from score where course_id = 1 or course_id = 2) as B

left join student on B.student_id = student.sid group by student_id HAVING count(student_id) > 1

8、查询学过“叶平”老师所教的所有课的同学的学号、姓名;

同上,只不过将001和002变成 in (叶平老师的所有课)

9、查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

同第1题

10、查询有课程成绩小于60分的同学的学号、姓名;

select sid,sname from student where sid in (

select distinct student_id from score where num < 60

)

11、查询没有学全所有课的同学的学号、姓名;

思路:

在分数表中根据学生进行分组,获取每一个学生选课数量

如果数量 == 总课程数量,表示已经选择了所有课程

select student_id,sname

from score left join student on score.student_id = student.sid

group by student_id HAVING count(course_id) = (select count(1) from course)

12、查询至少有一门课与学号为“001”的同学所学相同的同学的学号和姓名;

思路:

获取 001 同学选择的所有课程

获取课程在其中的所有人以及所有课程

根据学生筛选,获取所有学生信息

再与学生表连接,获取姓名

select student_id,sname, count(course_id)

from score left join student on score.student_id = student.sid

where student_id != 1 and course_id in (select course_id from score where student_id = 1) group by student_id

13、查询至少学过学号为“001”同学所有课的其他同学学号和姓名;

先找到和001的学过的所有人

然后个数 = 001所有学科     ==》 其他人可能选择的更多

select student_id,sname, count(course_id)

from score left join student on score.student_id = student.sid

where student_id != 1 and course_id in (select course_id from score where student_id = 1) group by student_id having count(course_id) = (select count(course_id) from score where student_id = 1)

14、查询和“002”号的同学学习的课程完全相同的其他同学学号和姓名;

个数相同

002学过的也学过

select student_id,sname from score left join student on score.student_id = student.sid where student_id in (

select student_id from score  where student_id != 1 group by student_id HAVING count(course_id) = (select count(1) from score where student_id = 1)

) and course_id in (select course_id from score where student_id = 1) group by student_id HAVING count(course_id) = (select count(1) from score where student_id = 1)

15、删除学习“叶平”老师课的score表记录;

delete from score where course_id in (

select cid from course left join teacher on course.teacher_id = teacher.tid where teacher.name = '叶平'

)

16、向SC表中插入一些记录,这些记录要求符合以下条件:①没有上过编号“002”课程的同学学号;②插入“002”号课程的平均成绩;

思路:

由于insert 支持

inset into tb1(xx,xx) select x1,x2 from tb2;

所有,获取所有没上过002课的所有人,获取002的平均成绩

insert into score(student_id, course_id, num) select sid,2,(select avg(num) from score where course_id = 2)

from student where sid not in (

select student_id from score where course_id = 2

)

17、按平均成绩从低到高 显示所有学生的“语文”、“数学”、“英语”三门的课程成绩,按如下形式显示: 学生ID,语文,数学,英语,有效课程数,有效平均分;

select sc.student_id,

(select num from score left join course on score.course_id = course.cid where course.cname = "生物" and score.student_id=sc.student_id) as sy,

(select num from score left join course on score.course_id = course.cid where course.cname = "物理" and score.student_id=sc.student_id) as wl,

(select num from score left join course on score.course_id = course.cid where course.cname = "体育" and score.student_id=sc.student_id) as ty,

count(sc.course_id),

avg(sc.num)

from score as sc

group by student_id desc

18、查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分;

select course_id, max(num) as max_num, min(num) as min_num from score group by course_id;

19、按各科平均成绩从低到高和及格率的百分数从高到低顺序;

思路:case when .. then

select course_id, avg(num) as avgnum,sum(case when score.num > 60 then 1 else 0 END)/count(1)*100 as percent from score group by course_id order by avgnum asc,percent desc;

20、课程平均分从高到低显示(现实任课老师);

select avg(if(isnull(score.num),0,score.num)),teacher.tname from course

left join score on course.cid = score.course_id

left join teacher on course.teacher_id = teacher.tid

group by score.course_id

21、查询各科成绩前三名的记录:(不考虑成绩并列情况)

select score.sid,score.course_id,score.num,T.first_num,T.second_num from score left join

(

select

sid,

(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 0,1) as first_num,

(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 3,1) as second_num

from

score as s1

) as T

on score.sid =T.sid

where score.num <= T.first_num and score.num >= T.second_num

22、查询每门课程被选修的学生数;

select course_id, count(1) from score group by course_id;

23、查询出只选修了一门课程的全部学生的学号和姓名;

select student.sid, student.sname, count(1) from score

left join student on score.student_id  = student.sid

group by course_id having count(1) = 1

24、查询男生、女生的人数;

select * from

(select count(1) as man from student where gender='男') as A ,

(select count(1) as feman from student where gender='女') as B

25、查询姓“张”的学生名单;

select sname from student where sname like '张%';

26、查询同名同姓学生名单,并统计同名人数;

select sname,count(1) as count from student group by sname;

27、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列;

select course_id,avg(if(isnull(num), 0 ,num)) as avg from score group by course_id order by avg     asc,course_id desc;

28、查询平均成绩大于85的所有学生的学号、姓名和平均成绩;

select student_id,sname, avg(if(isnull(num), 0 ,num)) from score left join student on score.student_id = student.sid group by student_id;

29、查询课程名称为“数学”,且分数低于60的学生姓名和分数;

select student.sname,score.num from score

left join course on score.course_id = course.cid

left join student on score.student_id = student.sid

where score.num < 60 and course.cname = '生物'

30、查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;

select * from score where score.student_id = 3 and score.num > 80

31、求选了课程的学生人数

select count(distinct student_id) from score

select count(c) from (

select count(student_id) as c from score group by student_id) as A

32、查询选修“杨艳”老师所授课程的学生中,成绩最高的学生姓名及其成绩;

select sname,num from score

left join student on score.student_id = student.sid

where score.course_id in (select course.cid from course left join teacher on course.teacher_id = teacher.tid where tname='张磊老师') order by num desc limit 1;

33、查询各个课程及相应的选修人数;

select course.cname,count(1) from score

left join course on score.course_id = course.cid

group by course_id;

34、查询不同课程但成绩相同的学生的学号、课程号、学生成绩;

select DISTINCT s1.course_id,s2.course_id,s1.num,s2.num from score as s1, score as s2 where s1.num = s2.num and s1.course_id != s2.course_id;

35、查询每门课程成绩最好的前两名;

select score.sid,score.course_id,score.num,T.first_num,T.second_num from score left join

(

select

sid,

(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 0,1) as first_num,

(select num from score as s2 where s2.course_id = s1.course_id order by num desc limit 1,1) as second_num

from

score as s1

) as T

on score.sid =T.sid

where score.num <= T.first_num and score.num >= T.second_num

36、检索至少选修两门课程的学生学号;

select student_id from score group by student_id having count(student_id) > 1

37、查询全部学生都选修的课程的课程号和课程名;

select course_id,count(1) from score group by course_id having count(1) = (select count(1) from student);

38、查询没学过“叶平”老师讲授的任一门课程的学生姓名;

select student_id,student.sname from score

left join student on score.student_id = student.sid

where score.course_id not in (

select cid from course left join teacher on course.teacher_id = teacher.tid where tname = '张磊老师'

)

group by student_id

39、查询两门以上不及格课程的同学的学号及其平均成绩;

select student_id,count(1) from score where num < 60 group by student_id having count(1) > 2

40、检索“004”课程分数小于60,按分数降序排列的同学学号;

select student_id from score where num< 60 and course_id = 4 order by num desc;

41、删除“002”同学的“001”课程的成绩;

delete from score where course_id = 1 and student_id = 2

mysql查询女生的成绩_0608mysql练习:查询3相关推荐

  1. mysql查询女生的成绩_MySQL 统计查询实现代码

    $conn = @mysql_connect("localhost","root","root123"); if (!$conn){ die ...

  2. 河南2021年高考成绩位次查询,河南高考成绩位次排名查询2020,河南高考一分一段表...

    每年河南高考成绩出来后,很多考生都不知道如何查询高考成绩位次排名,本文教大家如果查询河南高考个人成绩位次排名的相关知识,首先我们要知道什么是位次:位次是按照文化课总分从高到低进行排列的,总分相同时,当 ...

  3. 2018会考计算机成绩查询,2018会考成绩在哪里查询 会考成绩有用吗

    很多同学对高中的会考成绩不能正确认识,不知道会考成绩究竟有何用途.下文有途网小编就给大家整理了2018会考成绩的查询入口及其作用,供参考! 2018会考成绩查询入口 考生查询会考成绩可登录各省教育考试 ...

  4. 何时查询2021高考成绩长春市,2020年吉林长春成人高考成绩查询入口(已开通)...

    摘要: 2020年吉林长春成人高考成绩查询入口(已开通)为你介绍[导语]长春成人高考频道从吉林省教育考试院了解到,2019年吉林长春成人高考成绩查询平台于11月20日正式开通.考生可登录吉林省教育考试 ...

  5. 2021年职业卫生副高考试成绩查询,2021年卫生职业资格证查询分数流程操作

    2021年卫生资格证考试成绩公布时间为考后两个月,届时考生可登陆中国卫生人才网查询本次考试成绩,如何查询卫生考试成绩呢?请看小编的整理如下:| 2021年卫生资格考试成绩查询流程 1.访问中国卫生人才 ...

  6. mysql查询选课最少成绩最高_MySQL 练习

    最近在学习MYSQL 数据库,在此mark 一下做过的sql 相关练习 表结构如下: teacher表 tid tname class表 cid caption course表 cid cname t ...

  7. PHP+Mysql制作一个学生成绩查询模块

    PHP+Mysql制作一个学生成绩查询模块 我不是学PHP的我只是需要用一下PHP要是学又得好长时间,最好的方法就是问,但是问会的,又说让百度,得,我直接自己干吧,便花费了我一整天时间做了一下,从网上 ...

  8. 数据库查询张三的MYSQL成绩_MySQL数据库查询练习题

    练习题目 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 1.1 查询同时存在" 01 "课程和" 02 &q ...

  9. MySql 学生表 科目表 成绩表 查询学生各科成绩

    MySql 学生表 科目表 成绩表 查询学生各科成绩 2016年08月16日 01:05:02 lzxomg 阅读数 8155 版权声明:本文注明出处可以转载. https://blog.csdn.n ...

  10. mysql多表成绩查询_MySQL多表数据记录查询(一)

    1.交叉连接SQL语句的语法结构如下: select * from表1 cross join 表2; 或 Select * from表1,表2; 2.内连接SQL语句有两种表示形式: 使用inner ...

最新文章

  1. 论述Linux文件系统,linux文件系统概述
  2. mysql和mariadb可以同时使用吗_10分钟实现MariaDB与MySQL在一台服务器同时运行
  3. ElementUI中el-form实现表单重置以及将方法抽出为全局方法
  4. openquery基本运用实例
  5. win10计算机修改底色,win10电脑如何修改登陆背景
  6. mysql 默认时间字段 1067,mysql替datetime类型字段设置默认值default
  7. 【Elasticsearch】估算在 Elasticsearch 中存储文档的成本
  8. 08返回一个整数数组中最大子数组的和
  9. android布局共享,android布局属性详解分享
  10. 面试官:你背了几道面试题就敢说熟悉Java源码?对不起,我们不招连源码都不会看的人
  11. 做软件测试三,四年后的感想
  12. NDT-MCL定位算法论文解读
  13. 【一文快速理解23种设计模式】
  14. SQLServer_ER关系模型图
  15. 【物联网+区块链=?】展锐、蚂蚁链、广和通联合发布可信上链模组
  16. 外贸人订单,了解清楚再接单
  17. 初学者入门:软件测试从零开始
  18. 语音信号处理:librosa库【详解】
  19. 关于iptables封禁国外IP方法
  20. Xcode7最新app打包发布详细过程(一)

热门文章

  1. 【小程序语法】小程序脚本语言 - WXS
  2. 石头剪刀布游戏摇骰子游戏数字炸弹游戏购票模拟游戏二十一点(21点)游戏
  3. SpringCloud-Nacos的下载安装
  4. Sprint总结会议(反思)
  5. 如何快速搭建一个简单的塔防小游戏
  6. 虚拟win键(winkey) v1.00 是什么
  7. 关于档案馆建设的一些标准性文件说明
  8. 手把手教你如何用python进行数据分析!(附四个案例)
  9. 优化社交媒体的7条建议
  10. 1.3.1 创建HelloWorld项目