首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询输出“是”

SQL查询输出“是”
EN

Stack Overflow用户
提问于 2016-05-03 14:56:32
回答 3查看 42关注 0票数 0

我正在为明天的数据库系统考试做准备,我正在研究一个SQL问题。这个问题是论文中唯一一个没有答案的问题,但下面是一个问题:

我们使用以下模式:

  • 教授(姓名、办公室、部门、年龄)(年龄是关键)
  • 课程(cno,职称,部门)(cno代表课程编号,是关键,标题是课程名称,部门名称是提供课程的部门名称)
  • 注册(cno,学期,inst_name,注册)(关键是(cno,学期)

问题:编写以下sql :输出一个包含单行“是”的表,如果2000年至2009年期间教授数据库系统课程的最年长教授和最年轻教授之间的年龄差异最多为5年

我不确定我的方法是否正确,因为我们不完全想从表中输出一些东西。请注意,我认为注册与讲师开始教授该课程(这不是通常的定义AFAIK)相对应。

我的做法如下:

代码语言:javascript
复制
WITH dbsProfs AS (
    SELECT P.age
    FROM Professor P, Enroll E, Course C
    WHERE P.name = E.inst_name AND C.cno = E.cno AND C.title = "Database Systems"
        AND E.enrollment BETWEEN 2000 and 2009
    )
SELECT "Yes"
FROM dbsProfs
WHERE MAX(dbsProfs.age) - MIN(dbsProfs.age) <= 5

我对我的临时桌子很有信心。我正在对所有3个表进行连接,并筛选出只包含与我的查询相关的表。另一半我不确定。

任何关于这是否正确/如何纠正这一点的洞察力将不胜感激。我不相信WHERE MAX(dbsProfs.age) - MIN(dbsProfs.age) <= 5是有效的SQL

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-05-03 15:01:45

对于聚合函数,您应该使用

代码语言:javascript
复制
 SELECT "Yes"
 FROM dbsProfs
 HAVING MAX(dbsProfs.age) - MIN(dbsProfs.age) <= 5
票数 2
EN

Stack Overflow用户

发布于 2016-05-03 15:00:57

代码语言:javascript
复制
WITH dbsProfs AS (
    SELECT MIN(P.age) as min_age,MAX(P.age) as max_age
    FROM Professor P, Enroll E, Course C
    WHERE P.name = E.inst_name AND C.cno = E.cno AND C.title = "Database Systems"
        AND E.enrollment BETWEEN 2000 and 2009
    )
SELECT CASE WHEN min_age<max_age THEN "Yes" END
FROM dbsProfs
票数 0
EN

Stack Overflow用户

发布于 2016-05-03 15:00:57

确实,不能在WHERE语句中放置聚合函数。这个问题需要做更多的工作。

这就是我要采取的方法:

代码语言:javascript
复制
    SELECT CASE WHEN A.MaxAge - A.MinAge <=5 THEN "Yes" END
    FROM
    (
        SELECT Max(Professor.age) AS MaxAge, Min(Professor.age) AS MinAge
        FROM Professor INNER JOIN Enroll ON Professor.name = Enroll.inst_name 
        INNER JOIN Course ON Enroll.cno = Course.cno
        WHERE Course.title = "Database Systems" AND Enroll.enrollment BETWEEN 2000 AND 2009
    ) AS A

这假设注册确实是课程被指示的年份(正如您也假设的那样)。如果您喜欢Server而不是SELECT大小写,可以使用iif语句(后者更适合the标准)。

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

https://stackoverflow.com/questions/37007560

复制
相关文章

相似问题

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