-1

我是初学者并试图解决这些查询,但没有任何人可以帮助我。

以下关系跟踪航空公司航班信息:

create table flights( 
     flno     number(10) primary key,
     ffrom    varchar2(50),
     fto      varchar2(50),
     distance number(10),
     departs  varchar2(50),
     arrivs   varchar2(50),
     price    number(10,2)
);

create table aircraft(
    aid            number(10)  primary key,
    aname          varchar2(50),
    cruisingrange  number(10)
);

create table employees(
    eid           number(10)  primary key,
    ename         varchar2(50),
    salary        number(10,2)
);
create table certified(
    eid           number(10) references employees(eid),
    aid           number(10) references aircraft(aid)
 );
航班

+------+-------------+----------+---------+------ ---+--------+-------+
| 弗诺 | F来自 | Fto | 距离 | 出发 | 到达 | 价格 |
+------+-------------+----------+---------+------ ---+--------+-------+
| 第1234章 洛杉矶 | 檀香山 | 1100 | 9:15 | 21:45 | 25000 |
| 第1235章 洛杉矶 | 檀香山 | 1100 | 11:20 | 22:15 | 15000 |
| 第1236章 洛杉矶 | 德里 | 3100 | 6:45 | 23:45 | 25000 |
| 第1237章 伦敦 | 纽约 | 2400 | 7:25 | 21:00 | 35000 |
+------+-------------+----------+---------+------ ---+--------+-------+

飞机
+-----+-------+----------------+
| 援助| 姓名 | 巡航范围|
+-----+-------+----------------+
| 1 | BB111 | 2000 |
| 2 | AA123 | 5000 |
| 3 | AA555 | 900 |
| 4 | BB777 | 500 |
+-----+-------+----------------+

雇员
+-----+-------+--------+
| 开斋节 | 姓名 | 工资 |
+-----+-------+--------+
| 301 | 啊 | 14000 |
| 302 | BB | 12000 |
| 303 | 抄送 | 25000 |
| 304 | dd | 5000 |
| 305 | 易| 50000 |
| 306 | ff | 15000 |
| 307 | ggg | 65000 |
+-----+-------+--------+

认证
+-----+-----+
| 开斋节 | 援助 |
+-----+-----+
| 301 | 1 |
| 302 | 3 |
| 303 | 2 |
| 306 | 4 |
| 307 | 1 |
+-----+-----+

Employee 关系也描述了飞行员和其他类型的雇员;每个飞行员都获得了某些飞机的认证,只有飞行员获得了飞行认证。

我正在尝试以下查询

  1. 找出工资低于从洛杉矶到火奴鲁鲁的最便宜航线价格的飞行员的姓名。

  2. 对于所有航程超过 1000 英里的飞机,找到飞机的名称和所有获得该飞机认证的飞行员的平均工资。

我尝试查询第一个作为

 select ename from employees full natural join  certified 
        where 
      salary <(select min(price) from flightsz where   ffrom='los angles' and fto='honolulu');
4

1 回答 1

1

第二个是这样的:

 select aircraft.aname,avg(employees.salary) as average  from  aircraft inner join certified on 
  certified.aid =aircraft.aid  inner join employees on employees.eid = certified.eid where aircraft.cruisingrange > 1000
  group by aname

将 avg 函数应用于一个组可以让您获得平均工资。

于 2013-10-07T15:21:58.230 回答