Oracle SQL编程查询

B.街

抱歉,但是我对SQL编程的经验很少,我需要弄清楚为什么我的SQL查询无法正常工作...我一直试图无济于事!

数据库SQL文件位于此处

数据库架构如下:

DEPARTMENT(deptnum, descrip, instname, deptname, state, postcode)
ACADEMIC(acnum, deptnum*, famname, givename, initials, title)
PAPER(panum, title)
AUTHOR(panum*, acnum*)
FIELD(fieldnum, id, title)
INTEREST(fieldnum*, acnum*, descrip)

本质上,我试图找出以下内容,并遇到一些实际问题:

  1. 需要找到对一项以上研究感兴趣的学者。我需要列出这些学者的acnum,famname和givename,按famname,然后按givename排序。

    select A.acnum, A.givename, A.famname, INTEREST.FIELDNUM
    from ACADEMIC A, INTEREST
    where A.ACNUM = INTEREST.ACNUM
    having count (Interest.acnum) > 1; 
    

像这样吗?

  1. 我需要找到是否有没有学者对之感兴趣的研究领域?我需要打印像这样的研究领域的总数。我相信查询使用SET运算符。

  2. 我需要找到感兴趣的学者最多的研究领域。我需要输出fieldnum和感兴趣的学者人数。

塞布兹

该模式对我来说还不太清楚,但这是一个起点:

1)第一个:

SELECT a.acnum, a.famname ,a.givename, count(i.fieldnum) 
FROM ACADEMIC a INNER JOIN INTEREST i ON a.acnum = i.acnum
GROUP BY a.acnum, a.famname ,a.givename
HAVING COUNT(i.fieldnum) > 1
ORDER BY a.famname ,a.givename;

2)如果您只需要它们的数量:

SELECT COUNT(1) 
FROM FIELD f 
WHERE NOT EXISTS(SELECT 1 
                 FROM ACADEMIC a 
                 INNER JOIN INTEREST i ON a.acnum = i.acnum 
                 WHERE f.fieldnum = i.fieldnum);

3)有点模糊,因为我不知道最大的实际含义,但这是排序后的列表:

SELECT f.fieldnum, count(a.acnum) as number_of_interested_academics
FROM FIELD f 
    INNER JOIN INTEREST i ON f.fieldnum = i.fieldnum
    INNER JOIN ACADEMIC a ON i.acnum = a.acnum
GROUP BY f.fieldnum
ORDER BY count(a.acnum) DESC;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章