Mysql 用于合并需要计数的结果的查询

Mysql 用于合并需要计数的结果的查询,mysql,sql,join,oracle12c,Mysql,Sql,Join,Oracle12c,问题陈述- 我有两张桌子“地点”和“参观”。 在“地点”表中,我有关于城市、国家、邮政编码等的详细信息,在“访问”表中,我有关于对“地点”表中提到的地点进行了多少次访问的详细信息 下面是两个表的列值- 位置表 访问表 问题-我想计算特定国家和特定就诊类型的总就诊次数(基于就诊表中“就诊类型”列的值)。 通常,这将是直接的,方法是获取visit表中的总行数,并使用“ID”列作为键来联接它们。除此之外,我希望结果显示如下- ##结果 这就是让我陷入困境的原因。我不确定如何在此处获得国家名称以及行的计

问题陈述-

我有两张桌子“地点”和“参观”。 在“地点”表中,我有关于城市、国家、邮政编码等的详细信息,在“访问”表中,我有关于对“地点”表中提到的地点进行了多少次访问的详细信息

下面是两个表的列值-

位置表 访问表 问题-我想计算特定国家和特定就诊类型的总就诊次数(基于就诊表中“就诊类型”列的值)。 通常,这将是直接的,方法是获取visit表中的总行数,并使用“ID”列作为键来联接它们。除此之外,我希望结果显示如下-

##结果


这就是让我陷入困境的原因。我不确定如何在此处获得国家名称以及行的计数值。

了解到
ID
是连接两个表的常用属性,您可以通过简单的分组操作来完成此操作

select
  [Country Name],
  count(*)
from location l
  join visit v
    on l.id = v.id
group by [Country Name]
如果要按
国家/地区名称
就诊类型
对计数进行拆分,则必须将其添加到查询和分组中并按此字段进行拆分,但输出将与您描述的不同

select
  [Country Name],
  [Visit Type],
  count(*)
from location l
  join visit v
    on l.id = v.id
group by [Country Name],[Visit Type]

加入表格后,您是否尝试过按国家/地区和访问类型对数据进行分组?您应该展示到目前为止您已经尝试过的内容您可以更新问题以包含您尝试过的SQL查询吗?这将使我们更容易将这一挑战转化为学习体验,与jamie在下面的建议基本相同,但我正在寻找一些可能不使用连接的东西。谢谢,这很有效。我想我是在寻找一个不做连接的解决方案。。仅仅使用“IN”子句的一些变体是否可能?可以使用
IN
子句的一些变体,甚至
EXISTS
,但解决此类查询的正确且推荐的方法是使用标准的
连接

Country Name|Total no of Visits|
select
  [Country Name],
  count(*)
from location l
  join visit v
    on l.id = v.id
group by [Country Name]
select
  [Country Name],
  [Visit Type],
  count(*)
from location l
  join visit v
    on l.id = v.id
group by [Country Name],[Visit Type]