Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当GROUP BY中已有其他字段时,WHERE大于计数的SQL查询_Sql_Oracle_Join_Count_Subquery - Fatal编程技术网

当GROUP BY中已有其他字段时,WHERE大于计数的SQL查询

当GROUP BY中已有其他字段时,WHERE大于计数的SQL查询,sql,oracle,join,count,subquery,Sql,Oracle,Join,Count,Subquery,(我非常欢迎更好的标题建议) 我试图在Oracle中编写一个SQL查询,该查询只输出一个字段的计数高于某个值的条目 具体来说,我有机场、市场和州的表格 AIRPORTS表是关于机场的信息,包括ID(主键)、名称、缩写、MARKET(来自MARKETS表的外键)、STATE(来自STATE表的外键)和CITY字段。像这样: 14122 PITTSBURGH INTERNATIONAL PIT 30198 42 PITTSBURGH, PA 14150 PELLSTON REGI

(我非常欢迎更好的标题建议)

我试图在Oracle中编写一个SQL查询,该查询只输出一个字段的计数高于某个值的条目

具体来说,我有机场、市场和州的表格

AIRPORTS表是关于机场的信息,包括ID(主键)、名称、缩写、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
30576   Baglung, Nepal
30577   Binghamton, NY
30578   Bruggen, Germany
30579   Bergen, Norway
1   ALABAMA  AL
2   ALASKA   AK
4   ARIZONA  AZ
5   ARKANSAS AR
市场是关于机场可以进入的不同市场的信息。它包含一个ID(主键)和名称字段。像这样:

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
30576   Baglung, Nepal
30577   Binghamton, NY
30578   Bruggen, Germany
30579   Bergen, Norway
1   ALABAMA  AL
2   ALASKA   AK
4   ARIZONA  AZ
5   ARKANSAS AR
各州使用政府的FIPS代码包含有关美国各州的信息。它包含字段FIPS(主键)、名称和缩写(缩写)。像这样:

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
30576   Baglung, Nepal
30577   Binghamton, NY
30578   Bruggen, Germany
30579   Bergen, Norway
1   ALABAMA  AL
2   ALASKA   AK
4   ARIZONA  AZ
5   ARKANSAS AR
我正在尝试编写一个SQL查询,输出市场中机场位于多个州的所有机场的AIRPORTS.NAME、MARKETS.NAME和STATES.ABBR字段,我不想创建视图。我得到了一个查询,显示了超过2个机场的所有MARKETS.ID:

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
但我不确定接下来该怎么办。我相信有更好的方法可以做到这一点


谢谢大家!

你需要使用HAVING clausey,你不需要计算机场的数量,你需要计算每个市场拥有机场的不同州的数量。这不起作用。SQLDeveloper错误:ORA-00933:SQL命令未正确结束00933。00000-“SQL命令未正确结束”*原因:*操作:第2行第16列出现错误我做了一些更改(去掉AS m和AS a,只显式列出表名)。但这只是给了我和以前一样的结果。我现在如何列出这些市场中的所有机场、地铁区域和州?我必须做一些更改(第5行的fib.abbr到states.abbr和第11行的states.fip到states.fips)。但是我得到的输出是不正确的。它给了我洛杉矶和旧金山都会区的所有机场(都在加州),这些机场不应该包括在内,因为都会区不跨越两个州。有什么改变的建议吗?@MikeSherman-我没有发现你想要一个机场位于多个州的市场计数-相应地更新。我已经将它改为使用
>1
而不是
>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