为了接收我想要获得的输出,我应该实施啥样的连接?
Posted
技术标签:
【中文标题】为了接收我想要获得的输出,我应该实施啥样的连接?【英文标题】:What kind of join should I implement in order to receive the output I am trying to get?为了接收我想要获得的输出,我应该实施什么样的连接? 【发布时间】:2021-03-20 07:53:39 【问题描述】:注意:只是一个练习题.. 不是在寻找免费的家庭作业答案。
我的练习题要求按飞机年份升序报告航班数量。这需要连接两个表,即航班表和飞机表。我认为 SQL 应该相对简单,我认为我的主要问题是我目前拥有的模糊的 select 语句。我查看了不同的连接方法,包括显式和隐式,还尝试了左连接,但没有成功。
如果需要更多表格信息,我可以分享。两个表共享的列是年份。
另外,这里很新,所以如果这篇文章有什么不受欢迎或不正确的地方,请告诉我。
select *,
count(*) as n_flights
from flights, planes
where flights.year = planes.year
order by planes.year asc
;
我正在寻找的输出:
我得到的输出:
【问题讨论】:
【参考方案1】:据推测,flights 表中有一个列引用了 planes 表的主键 - 让我假设 plane_id
:这是您用来连接表的内容。
然后,您想按平面年份聚合,使用 group by
子句,并计算每个组中的行数:
select p.year, count(*) as n_flights
from flights f
inner join planes p on p.plane_id = f.plane_id
group by p.year
order by p.year
【讨论】:
这在我将 plane_id 更改为 tailnum 时有效,因为这是两个表之间共享的内容,我理解这仍然是您的意思!谢谢!!【参考方案2】:select planes.year, count(*)
from flights, planes
where flights.year = planes.year
group by planes.year
order by planes.year asc
【讨论】:
这仅返回年份和计数(*),每个仅返回一个值。我总是很欣赏额外的答案和不同的见解,所以,谢谢!!以上是关于为了接收我想要获得的输出,我应该实施啥样的连接?的主要内容,如果未能解决你的问题,请参考以下文章