阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某单位公用车辆后勤服务部门数据库的部分关系模式如下: 驾驶员:EMP(Eno,Ename,Age,Sex,telephone),各属性分别表示驾驶员工号、姓名、年龄、

admin2017-09-14  25

问题 阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
    某单位公用车辆后勤服务部门数据库的部分关系模式如下:
    驾驶员:EMP(Eno,Ename,Age,Sex,telephone),各属性分别表示驾驶员工号、姓名、年龄、性别和电话号码;
    车辆:CAR(Cno,Brand,Capacity),各属性分别表示汽车车牌号、品牌名和排量;
    调度:SCHEDULE(Sno,Eno,Cno,StartTime,EndTime),各属性分别表示调度号、驾驶员工号、汽车车牌号、发车时间和收车时间。
    奖金:BONUS(Eno,Year,Month,Amount),各属性分别表示驾驶员工号、年、月和当月的奖金数量。
    有关车辆调度的相关说明如下:
    公车的行驶时间只能在工作时间内,因此规定调度表中每天安排发车的时间在上午07:00:00至下午18:00:00范围内。
请将下面SQL语句的空缺部分补充完整。
    (1)查询调度次数最多的汽车车牌号及其品牌。
    SELECT  CAR.Cno,Brand
    FROM CAR,SCHEDULE
    WHERE  CAR.Cno=SCHEDULE.Cno
    GROUP BY___(k)_______
    HAVING____(1)______(SELECT COUNT(*)
    FROM  SCHEDULE
    GROUP BY Cno  );
    (2)查询所有在调度表中没有安排过‘大金龙’品牌车辆的驾驶员工号和姓名。
    SELECT Eno,Ename
    FROM  EMP
    WHERE Eno _____(m)_____(
    SELECT  Eno
    FROM _____(n)_____
    WHERE ____(o)______
    AND Brand=’大金龙’);

选项

答案(1)(k)CAR.Cno,Brand (1)COUNT(*)>=ALL (2)(m)NOT IN 或<>ANY (注:两者填其中一个即可) (n)SCHEDULE,CAR (o)SCHEDULE.Cno=CAR.Cno

解析 SQL查询通过SELECT语句实现。
    (1)根据问题要求,可通过子查询实现“调度次数最多的汽车车牌号及其品牌”的查询;对COUNT函数计算的结果应通过HAVING条件语句进行约束;通过Cno和Brand的组合来进行分组查询。完整的SQL语句如下:
    SELECT  CAR.Cno,Brand
    FROM  CAR,SCHEDULE
    WHERE  CAK.Cno=SCHEDULE.Cno
    GROUP BY CAR.Cno,BRAND
    HAVING COUNT(*)>=ALL (SELECT COUNT(*)
    FROM  SCHE DULE
    GROUP BY Cno  );
    (2)根据问题要求,需要使用嵌套查询。先将WORKS和COMPANY表进行连接,查找出所有在“安排过‘大金龙’品牌车辆的驾驶员”;然后在雇员表中使用“NOT IN”或者“<>ANY”查询不在前述结果里面的员工即可。完整的SQL语句如下:
    SELECT Eno,Ename
    FROM  EMP
    WHERE Eno NOT IN或<>ANY (
    SELECT  Eno
    FROM SCHEDULE,CAR
    WHERE SCHEDULE.Cno=CAR.Cno AND Brand=’大金龙’);
转载请注明原文地址:https://kaotiyun.com/show/OuUZ777K
0

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