当前位置: 首页 > 面试题库 >

SQL:比较来自不同表的两个计数

弓明亮
2023-03-14
问题内容

我有3张桌子,每个国家和地区都有它的代币

NAME              CODE
Afghanistan       AFG
Albania           AL
Algeria           DZ
American Samoa    AMSA
Andorra           AND
Angola            ANG
Anguilla          AXA
(...)

还有这些国家中所有湖泊和所有山峰中的一个的表。

LAKE                 CODE
Bodensee             A
Neusiedlersee        A
Lake Prespa          AL
Lake Ohrid           AL
Lake Skutari         AL
Lake Eyre            AUS
Lake Jindabyne       AUS
Lake Hume            AUS
Lake Eucumbene       AUS
Lake Hume            AUS
Lake Burley Griffin  AUS
(...)

MOUNTAIN             CODE
Hochgolling          A
Hochgolling          A
Zugspitze            A
Grossglockner        A
Jezerce              AL
Korab                AL
Uluru                AUS
Mt. Kosciuszko       AUS
Mt. Bogong           AUS
Musala               BG
Illampu              BOL
Sajama               BOL
Licancabur           BOL
(...)

我现在必须说明山峰少于湖泊的国家。我现在尝试了几个小时,但找不到解决此问题的方法。我试图将3个表连接在一起-
但我不知道下一步该怎么做。我确定我必须使用嵌套的SQL命令。

这是我对每个国家的湖泊和山脉计数的尝试

SELECT Country.name, count(Geo_lake.code), count(Geo_mountain.code) 
From Country 
INNER JOIN Geo_lake On (Country.code = geo_lake.code)
INNER JOIn Geo_mountain On (Country.code = geo_mountain.code) 
Group by Country.name;

但是以某种方式,两个列的count(Geo_lake.country)和count(Geo_mountain.country)似乎都具有相同的值,我不知道为什么。


问题答案:

首先获取每个人的总和:

# Sum of lakes
SELECT code, count(*) AS sum FROM lakes GROUP BY code

# Sum of mountains
SELECT code, count(*) AS sum FROM mountains GROUP BY code

然后将结果合并在一起,并选择一个国家的山之和小于湖泊数量的所有行:

SELECT l.code AS code, l.sum AS lake_count, m.sum AS mountain_count
FROM
(SELECT code, count(*) AS sum FROM lakes GROUP BY code) AS l JOIN
(SELECT code, count(*) AS sum FROM mountains GROUP BY code) AS m
ON l.code = m.code
WHERE m.sum < l.sum


 类似资料:
  • 问题内容: 假设我有两个表,表A和表B,并且我想比较某个列。 例如, 表A包含以下列:IP,主机,应用 表B具有以下列:IP,数据中心,服务器,模型,最后更新 如何比较两个表之间的IP列以获取差异? 我知道表是否具有相同的列,我可以使用并集和“减号”来获取差异,但是我无法找出表具有不同列的方式。 谢谢! 问题答案: 这将输出两个表中不匹配行的所有列,并且在任一侧都有NULL。

  • 问题内容: 我想知道如何比较两个不同的数据库 表记录 。我的意思是,我将比较两个数据库表,它们可能具有不同的列名但具有相同的数据。但是其中一个表可能比另一个表具有更多的记录,因此我想看看这两个表之间的区别是什么。为此,如何编写sql查询?仅供参考:这两个数据库都在同一个SQL Server实例下。 然后,在比较表1和表2之后,它应该 从 表2返回 Ruby Core。 问题答案: 如果执行从T1到

  • 我试图创建一个触发器,它编码以下规则:销售价格必须始终高于制造价格。 以下是我得到的错误: 错误(2,3):PL/SQL:SQL语句忽略错误(2,69):PL/SQL:ORA-00904:“LIEN\u FABRICANT\u PRODUIT”。“PRIXFABRICANT”:无效标识符错误(2.92):PLS-00302:必须声明组件“PRIXFABRICANT”<错误(5,3):PL/SQL:

  • 问题内容: 我想比较具有两个不同Oracle表的逗号分隔值的两列(差异表)的值。我想找到与所有值 都 匹配的行( 所有值都应与值匹配)。 注意:逗号分隔值的顺序不同。 例子: T1: T2: MY RESULT应该仅在两个表中显示基于“所有名称匹配”的匹配行。 尝试过但无法使其正常工作。 我使用下面的代码来解析值: 问题答案: 您可以将表格转换为第一范式,然后比较存储在每一行中的化合物。起点可以是

  • 我是Android Studio的新手,你能帮我吗?从下面的片段代码,我试着比较两个文本,其中一个是来自按钮,在点击test_ans按钮后,将转到'true'activity,如果他们是相同的。但不幸的是该应用程序被停止了:( 我试过delete@override public void onClick(View View),getText()变成红色,是onClick出了问题吗?请帮忙;(

  • 问题内容: 我有两个表,想要像这样在sqlite上比较行 我想产生这样的结果 sqlite中的语法如何?谢谢 问题答案: