SQL练习02

本文是一系列SQL练习,涵盖了查询与学号为'01'学生相同课程的学生信息,找寻与'01'号同学课程完全一致的同学,筛选未学过'张三'老师课程的学生,以及统计多门不及格课程学生的学号、姓名和平均成绩等复杂查询。此外,还涉及了课程成绩的多种排序、统计和排名方法。
摘要由CSDN通过智能技术生成

title: SQL练习
time: 2019年8月16日16:09:54
tags: SQL


SQL 练习

  1. 查询至少有一门课与学号为“01”的学生所学课程相同的学生的学号和姓名(重点)
SELECT
	s_id,
	s_name 
FROM
	student 
WHERE
	s_id IN (
	SELECT DISTINCT
		s_id 
	FROM
		score 
	WHERE
		c_id IN ( SELECT c_id FROM score WHERE s_id = '01' ) 
	AND s_id != '01' 
	)
  1. 查询和“01”号同学所学课程完全相同的其他同学的学号(重点)
SELECT
	s_id 
FROM
	score 
GROUP BY
	s_id 
HAVING
	count( c_id ) = ( SELECT count( c_id ) FROM score WHERE s_id = '01' ) 
	AND s_id != '01'
  1. 查询没学过"张三"老师讲授的任一门课程的学生姓名(重点,能做出来)
-- 查询没学过"张三"老师讲授的任一门课程的学生姓名 和47题一样(重点,能做出来)
SELECT
	s_name 
FROM
	student 
WHERE
	s_id NOT IN (
	SELECT
		s_id 
	FROM
		score AS s
		INNER JOIN course AS c ON c.c_id = s.c_id
		INNER JOIN teacher AS t ON t.t_id = c.t_id 
	WHERE
	t_name = '张三' 
	)
  1. 查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩(重点)
SELECT
	s.s_id,
	s.s_name,
	a.avg 
FROM
	student AS s
	INNER JOIN ( SELECT s_id, avg( s_score ) AS avg FROM score WHERE s_score < 60 GROUP BY s_id HAVING count( c_id ) >= 2 ) AS a ON s.s_id = a.s_id
  1. 检索"01"课程分数小于60,按分数降序排列的学生信息
SELECT
	s.s_id,
	s.s_name,
	s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值