首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行这3个SQL查询?

如何运行这3个SQL查询?
EN

Stack Overflow用户
提问于 2022-02-28 19:11:36
回答 1查看 42关注 0票数 0

我的DB中设置了以下表:

代码语言:javascript
复制
student (sid, sname, gender, gpa)
department (dname, numphds)
professor (pname, dname)
course (cno, cname, dname)
major (dname, sid)
enroll (sid, grade, dname, cno)

我正试图解决这三个问题,我想不出:

  1. 找到了这些系的名称,这样每个在该系主修的学生都不会选修编译建设课程。

  1. 如果有一名或多名学生主修该系,且GPA < 1.5,则称为“成绩不佳”。查找所有成绩不佳的系的名称和该系专业学生的平均平均绩点。

  1. 找到参加热力学课程的学生的名字和专业(注意cno=310和dname=的“化学工程”表示热力学课程)。

第三,到目前为止,我得到了以下内容:

代码语言:javascript
复制
query6 = ''' SELECT sname, major.dname
            FROM student
            JOIN major ON student.sid = major.sid
            JOIN enroll ON enroll.sid = student.sid
            JOIN course ON course.cno = enroll.cno
            WHERE cname = "Thermodynamics"
            AND course.dname = "Chemical Engineering"
'''
EN

回答 1

Stack Overflow用户

发布于 2022-02-28 19:47:41

我不太了解SQL是如何工作的,所以这是查询的一个方向。

为#1:

代码语言:javascript
复制
SELECT dname FROM department WHERE dname NOT IN (
    SELECT DISTINCT dname FROM enroll WHERE cno = (
        SELECT cno FROM course WHERE cname = 'Compiler Construction course'
    )
)

对于#2:我将告诉你如何获得dname,但你必须自己获得平均值,也许可以通过查看或类似的方式获得。

代码语言:javascript
复制
SELECT dname FROM department WHERE dname NOT IN (
    SELECT DISTINCT dname FROM enroll WHERE sid NOT IN(
        SELECT sid FROM student WHERE gpa < 1.5
    )
)

第三,我认为你忘记了主修专业的钥匙,因为在同一个系读两次专业的学生会有相同的sid和相同的dname。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71299934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档