2301_80140255 2024-11-11 15:36 采纳率: 83.3%
浏览 12
已结题

以数据库student,数据表stu、course、sc及表数据为基础,请使用sQL语句实现以下查询操作,并验证查询结果

一:连接查询
1:.查询选课人数最多的专业:
2:查询每个学生学分的获得情况,结果中包括学号、姓名、专业和总学分,其中总学分为选修课程中考试及格的课程学分之和:。
3:查询选修人数低于2人的课程,结果中显示出该课程的课程号和课程名。
4:查询与“王强”在同一个专业的学生的信息。

  • 写回答

1条回答 默认 最新

  • 趣享先生 优质创作者: 编程框架技术领域 2024-11-11 15:53
    关注

    该回答参考ChatGPT,由吾为汝整理提供如若有用,还请题主采纳!

    为了实现你所要求的查询操作,我们需要假设数据库结构和数据。以下是一个可能的数据库结构以及相应的 SQL 查询语句。

    数据库结构假设

    1. 学生表 (stu):

      • student_id (学号)
      • name (姓名)
      • major (专业)
    2. 课程表 (course):

      • course_id (课程号)
      • course_name (课程名)
      • credit (学分)
    3. 选课表 (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;
    

    验证查询结果

    在执行这些查询之前,请确保你的数据库中已经存在相应的表和数据。可以使用以下步骤验证查询结果:

    1. 创建表和插入数据(如果尚未创建):
    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);
    
    1. 执行查询:在 SQL Server Management Studio 或其他 SQL 客户端中执行上述查询语句。

    2. 检查结果:根据返回的结果验证查询是否符合预期。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月19日
  • 已采纳回答 11月11日
  • 创建了问题 11月11日