一:连接查询
1:.查询选课人数最多的专业:
2:查询每个学生学分的获得情况,结果中包括学号、姓名、专业和总学分,其中总学分为选修课程中考试及格的课程学分之和:。
3:查询选修人数低于2人的课程,结果中显示出该课程的课程号和课程名。
4:查询与“王强”在同一个专业的学生的信息。
以数据库student,数据表stu、course、sc及表数据为基础,请使用sQL语句实现以下查询操作,并验证查询结果
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注♥ 该回答参考ChatGPT,由吾为汝整理提供,如若有用,还请题主采纳!♥
为了实现你所要求的查询操作,我们需要假设数据库结构和数据。以下是一个可能的数据库结构以及相应的 SQL 查询语句。
数据库结构假设
学生表 (stu):
student_id(学号)name(姓名)major(专业)
课程表 (course):
course_id(课程号)course_name(课程名)credit(学分)
选课表 (sc):
student_id(学号)course_id(课程号)score(成绩)
SQL 查询操作
1. 查询选课人数最多的专业
SELECT major, COUNT(DISTINCT student_id) AS student_count FROM stu JOIN sc ON stu.student_id = sc.student_id GROUP BY major ORDER BY student_count DESC OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;2. 查询每个学生学分的获得情况
SELECT s.student_id, s.name, s.major, SUM(c.credit) AS total_credits FROM stu s JOIN sc sc ON s.student_id = sc.student_id JOIN course c ON sc.course_id = c.course_id WHERE sc.score >= 60 -- 假设及格分数为60 GROUP BY s.student_id, s.name, s.major;3. 查询选修人数低于2人的课程
SELECT c.course_id, c.course_name FROM course c LEFT JOIN sc sc ON c.course_id = sc.course_id GROUP BY c.course_id, c.course_name HAVING COUNT(sc.student_id) < 2;4. 查询与“王强”在同一个专业的学生的信息
SELECT s.* FROM stu s JOIN stu s2 ON s.major = s2.major WHERE s2.name = '王强' AND s.student_id <> s2.student_id;验证查询结果
在执行这些查询之前,请确保你的数据库中已经存在相应的表和数据。可以使用以下步骤验证查询结果:
- 创建表和插入数据(如果尚未创建):
CREATE TABLE stu ( student_id INT PRIMARY KEY, name NVARCHAR(50), major NVARCHAR(50) ); CREATE TABLE course ( course_id INT PRIMARY KEY, course_name NVARCHAR(50), credit INT ); CREATE TABLE sc ( student_id INT, course_id INT, score INT, FOREIGN KEY (student_id) REFERENCES stu(student_id), FOREIGN KEY (course_id) REFERENCES course(course_id) ); -- 插入示例数据 INSERT INTO stu (student_id, name, major) VALUES (1, '王强', '计算机科学'); INSERT INTO stu (student_id, name, major) VALUES (2, '李四', '计算机科学'); INSERT INTO stu (student_id, name, major) VALUES (3, '张三', '数学'); INSERT INTO stu (student_id, name, major) VALUES (4, '赵六', '物理'); INSERT INTO course (course_id, course_name, credit) VALUES (101, '数据结构', 3); INSERT INTO course (course_id, course_name, credit) VALUES (102, '算法', 4); INSERT INTO course (course_id, course_name, credit) VALUES (103, '线性代数', 2); INSERT INTO sc (student_id, course_id, score) VALUES (1, 101, 70); INSERT INTO sc (student_id, course_id, score) VALUES (1, 102, 80); INSERT INTO sc (student_id, course_id, score) VALUES (2, 101, 50); INSERT INTO sc (student_id, course_id, score) VALUES (3, 103, 90);执行查询:在 SQL Server Management Studio 或其他 SQL 客户端中执行上述查询语句。
检查结果:根据返回的结果验证查询是否符合预期。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报