将子查询与比较一起使用-Oracle

暴躁

我一直试图将结果处理到这三个查询中,但我不知道我在做什么错

列出参加少于三个小组的所有学术成员。

列出领导最大组数的学术ID

与此查询(第一部分)

SELECT a.ID  , min(a.name) as Name  
FROM Academic a , researchGroup r 
WHERE count(r.managerID)>3
GROUP BY a.ID; 

但这似乎没用。

我有这个关系模式

researchGroup(name (P.R Key Composite) , codeD , mainResearchArea , managerID /* forgien key with AcademicStaff(ID) */ , labID (P.R Key Composite) )

AcademicStaff(ID {PR KEY} , name)

有什么解决方案吗?

史蒂夫

以下内容将为您提供学术人员和管理的研究小组数量的列表:

SELECT
    *

FROM
    (
        SELECT 
            ac.ID                   AS academic_id
            ,MAX(ac.name)           AS academic_name
            ,COUNT(rg.managerID)    AS num_groups_managed
            ,DENSE_RANK() OVER (ORDER BY COUNT(rg.managerID) DESC) AS academic_rank

        FROM 
            Academic AS ac

        INNER JOIN
            researchGroup AS rg
            ON (rg.managerID = ac.ID)

        GROUP BY 
            ac.ID

    ) AS subquery

WHERE
    --** uncomment the following line for the academics managing above 3 groups
    --num_groups_managed >= 3

    --** or uncomment the following line for the top-ranked academics (there could be more than 1)
    --academic_rank = 1

ORDER BY
    academic_rank ASC
    ,academic_name ASC

取消注释WHERE子句的相关部分将为您提供所需的结果。

顺便说一句,自从我使用Oracle SQL已有一段时间了,所以请原谅任何小的语法错误(特别是,我不记得Oracle是否AS在表名之后接受关键字)。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章