gpt4 book ai didi

sql - 当另一个字段已经在 GROUP BY 中时,WHERE 大于计数的 SQL 查询

转载 作者:行者123 更新时间:2023-12-02 08:37:20 25 4
gpt4 key购买 nike

(我很高兴欢迎更好的标题建议)

我正在尝试在 Oracle 中编写一个 SQL 查询,它只输出条目,其中一个字段的计数高于某个值。

具体来说,我有表 AIRPORTS、MARKETS 和 STATES。

AIRPORTS 表是有关机场的信息,其中包含字段 ID(主键)、NAME、ABBR(缩写)、MARKET(来自 MARKETS 表的外键)、STATE(来自 STATE 表的外键)和 CITY。像这样:

14122   PITTSBURGH INTERNATIONAL    PIT 30198   42  PITTSBURGH, PA
14150 PELLSTON REGIONAL AIRPORT PLN 34150 26 PELLSTON, MI
14193 PENSACOLA GULF COAST REGIONAL PNS 33728 12 PENSACOLA, FL

MARKETS 是有关机场可以进入的不同市场的信息。它包含一个 ID(主键)和 NAME 字段。像这样:

30576   Baglung, Nepal
30577 Binghamton, NY
30578 Bruggen, Germany
30579 Bergen, Norway

STATES 包含有关美国各州的信息,使用政府的 FIPS 代码。它包含字段 FIPS(主键)、NAME 和 ABBR(缩写)。像这样:

1   ALABAMA  AL
2 ALASKA AK
4 ARIZONA AZ
5 ARKANSAS AR

我正在尝试编写一个 SQL 查询,输出 在多个州拥有机场的市场中所有机场的 AIRPORTS.NAME、MARKETS.NAME 和 STATES.ABBR 字段,我想在不创建 View 的情况下做到这一点。我得到的查询显示所有 MARKETS.ID 有超过 2 个机场:

SELECT *
FROM(
SELECT markets.id as "market", count(markets.name) as "airports"
FROM markets
INNER JOIN airports
ON airports.market = markets.id
GROUP BY markets.id)
WHERE "airports" > 2

但我不确定从这里去哪里。而且我确信有更好的方法来做到这一点。

谢谢!

最佳答案

  SELECT m.id AS market, COUNT(*) AS airports
FROM markets AS m
INNER JOIN airports AS a
ON a.market = m.id
GROUP BY m.id
HAVING COUNT(*) > 2

关于sql - 当另一个字段已经在 GROUP BY 中时,WHERE 大于计数的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20087551/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com