SQL Server---实验3---查询

1. 使用SQL语句完成以下查询。

(1) 查询成绩高于学号为“141002”的所有选修课成绩的学生学号、课程号和成绩。

SELECT Sno, Cno, Grade
FROM SC
WHERE Grade > ALL(
	SELECT Grade
	FROM SC
	WHERE Sno = 141002
)

(2) 查询课程号101的成绩高于课程号204成绩的学生的学号、课程号、成绩。

SELECT Sno 学号, Cno 课程号, Grade 成绩
FROM SC
WHERE Cno=101 AND Grade >= ANY (
	SELECT Grade
	FROM SC
	WHERE Cno=204
)

(3) 查询选修了“英语”的学生人数。

SELECT COUNT(Grade) AS 学生人数
FROM SC
JOIN C
ON C.Cno = SC.Cno
WHERE C.Cname = '英语'
GROUP BY C.Cno

(4) 查询至少有3名学生选修且课程号中含有1的课程号及该门课程的平均分。

SELECT Cno 课程号, COUNT(Cno) AS 选修人数, avg(Grade) AS 平均分
FROM SC
WHERE Cno LIKE '%1%'
GROUP BY Cno
HAVING COUNT(Cno) > 3

(5) 查询不同课程中成绩优秀(>=85分)的人数,查询结果显示课程号、优秀人数。

SELECT Cno 课程号, COUNT(Cno) 优秀人数
FROM (
	SELECT *
	FROM SC
	WHERE Grade > 85
) S
GROUP BY Cno

(6)查询总分排名第一的学生的信息,查询结果显示学号和总分。

SELECT TOP 1 Sno 学号, SUM(Grade) 总分
FROM SC
GROUP BY Sno
ORDER BY SUM(Grade) DESC

(7) 在C表里插入一条记录(‘303’,’数据结构’,’张毅’),查询课程的被选修情况。(要求:不管该课程有没有被学生选修,都要显示该课程的课程名、选修该课程的学生的学号)

INSERT INTO C VALUES ('303','数据结构','张毅')
SELECT Cname, Sno 
FROM C
LEFT OUTER JOIN SC
ON SC.Cno = C.Cno

2. 集合操作:

(1) 使用交集查询完成:查询女生且年龄小于22岁的的基本信息。

SELECT * FROM S WHERE Sex='女'
INTERSECT
SELECT * FROM S WHERE Age < 22

(2) 使用差集查询完成:查询女生且年龄小于22岁的的基本信息。

SELECT * FROM S WHERE Sex='女'
EXCEPT
SELECT * FROM S WHERE Age >= 22

(3) 使用集合查询完成:查询选修了“101”以及“204”课程的学生的学号、课程号。

SELECT Sno, Cno FROM SC WHERE Cno = 101
UNION
SELECT Sno, Cno FROM SC WHERE Cno = 204
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值