(ORACLE SQL)关于子查询和运算符,如ALL,ANY等

时间:2014-11-27 11:44:03

标签: oracle subquery any

我有3张桌子

CREATE TABLE airships( 
    idas number PRIMARY KEY, 
    nameas varchar2(20), 
    range number 
);

CREATE TABLE Certificate( 
    idem number NOT NULL, 
    idas number NOT NULL, 
    FOREIGN KEY (idem) REFERENCES employees(idem), 
    FOREIGN KEY (idas) REFERENCES airships(idas) 
);

CREATE TABLE employees( 
    idem number PRIMARY KEY, 
    nameem varchar2(20), paycheck number 
);

我必须找到那些使用子查询和opratos认证的最大数量飞艇的员工,例如EXISTS,IN,ALL,ANY

我设法只找到一名员工,而不用任何oparatos。

Select  *
from (Select idem,count(idas) as AirshipName
      From Certificate
      Group By idem
      Order By count(idas) DESC)
WHERE ROWNUM=1

1 个答案:

答案 0 :(得分:3)

我不确定如何使用您列出的特定运算符来执行此操作。以下是使用HAVING

执行此操作的方法

解释ALL运算符here。您可以使用此查询:

SELECT "idem"
FROM Certificate
GROUP BY "idem"
HAVING COUNT(*) >= ALL (
    SELECT COUNT(*)
    FROM Certificate
    GROUP BY "idem")

DEMO