阅读下列说明,回答问题。 【说明】 某大型集团公司的数据库的部分关系模式如下: 员工表:EMP(Eno,Ename,Age,Sex,Tit1e),各属性分别表示员工工号、姓名、年龄、性别和职称级别,其中性别取值为“男”“女”; 公司

admin2016-09-08  21

问题 阅读下列说明,回答问题。
【说明】
    某大型集团公司的数据库的部分关系模式如下:
    员工表:EMP(Eno,Ename,Age,Sex,Tit1e),各属性分别表示员工工号、姓名、年龄、性别和职称级别,其中性别取值为“男”“女”;
    公司表:COMPANY(Cno,Cname,City),各属性分别表示公司编号、名称和所在城市;
    工作表:WORKS(Eno,Cno,Salary),各属性分别表示职工工号、工作的公司编号和工资。
    有关关系模式的属性及相关说明如下:
(1)允许一个员工在多家公司工作,使用身份证号作为工号值。
(2)工资不能低于1500元。
    根据以上描述,回答下列问题:
请将下面SQL语句的空缺部分补充完整。
(1)查询员工最多的公司编号和公司名称。
    SELECT  COMPANY.Cno, Cname
    FROM  COMPANY, WORKS
    WHERE  COMPANY.Cno一WORKS.Cno
    GROUP BY
(k)
HAVING
(1)
(SELECT  COUNT(★)
FROM  WORKS
    GROUP BY Cno
    );
(2)查询所有不在“中国银行北京分行”工作的员工工号和姓名。
    SELECT Eno, Ename
    FROM  EMP
    WHERE Eno
(m)
(
    SELECT  Eno
    FROM
(n)
WHERE
(o)
    AND Cname=’中国银行北京分行’
    );

选项

答案(1)(k)COMPANY.Cno,Cname (l)COUNT(*)>=ALL (2)(m)NOT IN或 <>ANY(注:两者填一个即可) (n)WORKS,COMPANY (o)WORKS.Cno=COMPANYCno

解析 SQL查询通过SELECT语句实现。
(1)根据问题要求,可通过子查询实现“查询员工最多的公司编号和公司名称”的查询;对COUNT函数计算的结果应通过HAVING条件语句进行约束;通过Cno和Cname的组合来进行分组查询。完整的SQL语句如下:
    SELECT COMPANY.Cno, Cname
    FROM  COMPANY, WORKS
    WHERE  COMPANY.Cno一WORKS.Cno
    GROUP BY COMPANY.Cno, Cname
    HAVING    COUNT(★)>=ALL (SELECT  COUNT(★)
                                        FROM  WORKS
                                             GROUP BY Cno
                                             );
(2)根据问题要求,需要使用嵌套查询。先将WORKS和COMPANY表进行连接,查找出所有在“中国银行北京分行”工作的员工;然后在雇员表中使用“NOT IN"或者 “<>ANY”查询不在前述结果里面的员工即可。完整的SQL语句如下:
    SELECT Eno, Ename
    FROM  EMP
    WHERE Eno NOT  IN  或    <>ANY (
    SELECT  Eno
    FROM    WORKS, COMPANY
    WHERE    WORKS.Cno = COMPANY.Cno
    AND Cname=’中国银行北京分行’
    );
转载请注明原文地址:https://kaotiyun.com/show/MuUZ777K
0

相关试题推荐
最新回复(0)