Sql 在查询中使用
生成每种机型飞行小时数最高的飞行员列表。包括pid、模型和记录小时数的列 这是我尝试过的-我对SQL非常陌生:Sql 在查询中使用,sql,oracle,Sql,Oracle,生成每种机型飞行小时数最高的飞行员列表。包括pid、模型和记录小时数的列 这是我尝试过的-我对SQL非常陌生: select pid, hourslogged from flightskills f join (select model, max(hourslogged) as Hourslogged from flightskills group by model) h on f.mode
select
pid, hourslogged
from
flightskills f
join
(select
model, max(hourslogged) as Hourslogged
from
flightskills
group by
model) h on f.model = h.model
这个输出是错误的
PID MODEL HOURSLOGGED
1 A-10 387
4 A-10 387
6 A-10 387
7 A-10 387
3 F-117A 254
4 F-117A 254
5 F-117A 254
6 F-117A 254
1 F-15E 450
2 F-15E 450
3 F-15E 450
4 F-15E 450
6 F-15E 450
1 F-16 827
6 F-16 827
1 F-22 900
3 F-22 900
4 F-22 900
5 F-22 900
6 F-22 900
6 X-100 100
想要这样的吗
PID MODEL HOURSLOGGED
1 A-10 387
3 F-117A 254
4 F-15E 450
1 F-16 827
3 F-22 900
6 X-100 100
我想你正在寻找这样的东西:
select f.*
from flightskills f
where f.hourslogged = (select max(f2.hourslogged)
from flightskills f2
where f2.model = f.model
);
我想你正在寻找这样的东西:
select f.*
from flightskills f
where f.hourslogged = (select max(f2.hourslogged)
from flightskills f2
where f2.model = f.model
);
在你的询问中
select pid, hourslogged
from flightskills f
join
(select model, max( hourslogged) as Hourslogged
from flightskills
group by model) h
on f.model = h.model
编译查询时,有两个PID
列和两个hoursloged
列可用,f.PID
和h.PID
,以及f.hoursloged
和h.hoursloged
。在“选择”列表中,您需要告诉数据库要使用哪些列。要解决此问题,您可以将查询更改为
select f.pid, h.hourslogged
from flightskills f
join
(select model, max( hourslogged) as Hourslogged
from flightskills
group by model) h
on f.model = h.model
祝你剩余的作业顺利。在你的查询中
select pid, hourslogged
from flightskills f
join
(select model, max( hourslogged) as Hourslogged
from flightskills
group by model) h
on f.model = h.model
编译查询时,有两个PID
列和两个hoursloged
列可用,f.PID
和h.PID
,以及f.hoursloged
和h.hoursloged
。在“选择”列表中,您需要告诉数据库要使用哪些列。要解决此问题,您可以将查询更改为
select f.pid, h.hourslogged
from flightskills f
join
(select model, max( hourslogged) as Hourslogged
from flightskills
group by model) h
on f.model = h.model
祝你在剩下的作业中好运。你甚至不需要进行嵌套查询。当您使用Oracle时,您可以利用。仍然需要一点子查询,因为分析函数不会直接进入WHERE条件(它在WHERE条件求值后运行) 您可以使用不同的排名方法,而不是简单的。例如,将处理两名飞行员记录相同小时数的不同情况(他们将同时显示两名飞行员,而不是随机显示两名飞行员中的一名)
对于每个型号,上述方法直接在顶部记录之后进行
hourslogged
。您可以通过两个步骤完成此操作1./Rank 2./Select top-Rank(rn=1
)。您甚至不需要进行嵌套查询。当您使用Oracle时,您可以利用。仍然需要一点子查询,因为分析函数不会直接进入WHERE条件(它在WHERE条件求值后运行)
您可以使用不同的排名方法,而不是简单的。例如,将处理两名飞行员记录相同小时数的不同情况(他们将同时显示两名飞行员,而不是随机显示两名飞行员中的一名)
对于每个型号,上述方法直接在顶部记录之后进行
hourslogged
。您可以通过两个步骤完成此操作1./Rank 2./Select top-Rank(rn=1
)。使用表别名和子查询别名(f.
或h.
)为列pid
和hoursloged
)添加前缀,由于db无法决定从哪个数据集中选择……示例数据和期望的结果将非常有用。而且,当您添加别名时,仍然无法得到正确的答案,您还必须添加另一个连接条件:on f.model=h.model和f.hoursloged=h.hoursloged
以获得具有高值的行。稍后,您将学习如何使用窗口聚合以更简单的方式获得相同的结果,即行数
或最大值
好的,谢谢,我现在明白了。必须在车型和工时上加入。在工时记录上加入将是一种冒险的做法。如果两个飞行员记录的小时数相同怎么办?在列pid
和hoursloged
前面加上表和子查询别名(f.
或h.
),由于db无法决定从哪个数据集中选择……示例数据和期望的结果将非常有用。而且,当您添加别名时,仍然无法得到正确的答案,您还必须添加另一个连接条件:on f.model=h.model和f.hoursloged=h.hoursloged
以获得具有高值的行。稍后,您将学习如何使用窗口聚合以更简单的方式获得相同的结果,即行数
或最大值
好的,谢谢,我现在明白了。必须在车型和工时上加入。在工时记录上加入将是一种冒险的做法。如果两名飞行员记录的小时数相同怎么办?这很接近,但这是飞行员PID模型小时记录的所有小时总数1 A-10 387 4 A-10 387 6 A-10 387 7 A-10 387 3 F-117A 254这很接近,但这是飞行员PID模型小时记录的所有小时总数1 A-10 387 4 A-10387 6 A-10387 A-10387 3 F-117A254@MrBlack . . . 这不是一个有用的评论。@Black先生。这不是一个有用的评论。