登峰造极境

  • WIN
    • CSharp
    • JAVA
    • OAM
    • DirectX
    • Emgucv
  • UNIX
    • FFmpeg
    • QT
    • Python
    • Opencv
    • Openwrt
    • Twisted
    • Design Patterns
    • Mysql
    • Mycat
    • MariaDB
    • Make
    • OAM
    • Supervisor
    • Nginx
    • KVM
    • Docker
    • OpenStack
  • WEB
    • ASP
    • Node.js
    • PHP
    • Directadmin
    • Openssl
    • Regex
  • APP
    • Android
  • AI
    • Algorithm
    • Deep Learning
    • Machine Learning
  • IOT
    • Device
    • MSP430
  • DIY
    • Algorithm
    • Design Patterns
    • MATH
    • X98 AIR 3G
    • Tucao
    • fun
  • LIFE
    • 美食
    • 关于我
  • LINKS
  • ME
Claves
长风破浪会有时,直挂云帆济沧海
  1. 首页
  2. Platforms
  3. LINUX
  4. Mysql
  5. 正文

Mysql-子查询类题目

2018-04-15

数据库结构下载:course

1、检索成绩比学生张三平均分高的所有学生及课程信息。

SELECT class_name, student.student_no, student_name, course_name, score
FROM classes
	JOIN student ON student.class_no = classes.class_no
	JOIN choose ON choose.student_no = student.student_no
	JOIN course ON choose.course_no = course.course_no
WHERE score > (
	SELECT AVG(score)
	FROM student, choose
	WHERE student.student_no = choose.student_no
		AND student_name = '张三'
)

2、检索平均成绩比学生张三平均分高的所有学生及课程信息

SELECT class_name, student.student_no, student_name, course_name
	, AVG(score)
FROM classes
	JOIN student ON student.class_no = classes.class_no
	JOIN choose ON choose.student_no = student.student_no
	JOIN course ON choose.course_no = course.course_no
GROUP BY student.student_no
HAVING AVG(score) > (
	SELECT AVG(score)
	FROM choose
		JOIN student ON student.student_no = choose.student_no
	WHERE student_name = '张三'
)

3、检索没有申请选修课的教师信息

SELECT *
FROM teacher
WHERE teacher_no NOT IN (
	SELECT teacher.teacher_no
	FROM course
	WHERE course.teacher_no = teacher.teacher_no
);

4、检索尚未被任何学生选修的课程信息

SELECT *
FROM course
WHERE NOT EXISTS (
	SELECT *
	FROM choose
	WHERE course.course_no = choose.course_no
)

5、检索“2018 自动化2班”比“2018 自动化1班”最低分高的学生信息

SELECT student.student_no, student_name, class_name
FROM student
	JOIN classes ON student.class_no = classes.class_no
	JOIN choose ON choose.student_no = student.student_no
WHERE class_name = '2018 自动化2班'
	AND score > ANY (
		SELECT score
		FROM choose
			JOIN student ON student.student_no = choose.student_no
			JOIN classes ON classes.class_no = student.class_no
		WHERE class_name = '2018 自动化1班'
	)

6、检索“2018 自动化2班”比“2018 自动化1班”最高分高的学生信息

SELECT student.student_no, student_name, class_name
FROM student
	JOIN classes ON student.class_no = classes.class_no
	JOIN choose ON choose.student_no = student.student_no
WHERE class_name = '2018 自动化2班'
	AND score > ALL (
		SELECT score
		FROM choose
			JOIN student ON student.student_no = choose.student_no
			JOIN classes ON classes.class_no = student.class_no
		WHERE class_name = '2018 自动化1班'
	)

7、统计选修人数少于30人的所有课程信息

SELECT course.course_no, course_name, teacher_name, teacher_contact
	, COUNT(*) AS student_num
FROM choose
	JOIN course ON choose.course_no = course.course_no
	JOIN teacher ON teacher.teacher_no = course.teacher_no
GROUP BY course_no
HAVING COUNT(*) < 30
UNION ALL
SELECT course.course_no, course_name, teacher_name, teacher_contact, 0
FROM course
	JOIN teacher ON teacher.teacher_no = course.teacher_no
WHERE NOT EXISTS (
	SELECT *
	FROM choose
	WHERE course.course_no = choose.course_no
);

8、统计每一门课程已经有多少学生选修,还能供多少学生选修

SELECT course.course_no, course_name, teacher_name, up_limit
	, COUNT(*) AS student_num
	, up_limit - COUNT(*) AS available
FROM choose
	JOIN course ON choose.course_no = course.course_no
	JOIN teacher ON teacher.teacher_no = course.teacher_no
GROUP BY course_no
UNION ALL
SELECT course.course_no, course_name, teacher_name, up_limit, 0
	, up_limit
FROM course
	JOIN teacher ON teacher.teacher_no = course.teacher_no
WHERE NOT EXISTS (
	SELECT *
	FROM choose
	WHERE course.course_no = choose.course_no
)

 

标签: 暂无
最后更新:2018-05-13

代号山岳

知之为知之 不知为不知

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2099 登峰造极境. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备14031139号-5

川公网安备51012202000587号