Sql 统计不同国家的几家商店
我使用的是Oracle SQL Developer,我有一个名为Stores的表,带有一个位置标识符,指向另一个名为“location”的表,该表指向自身,以标识自己的国家/城市等 我想计算某个国家有多少家商店,但查询只计算同一个城市有多少家 查询是(问题在计数部分,翻译:tienda store,lugar location): 结果是这样的:Sql 统计不同国家的几家商店,sql,oracle,count,Sql,Oracle,Count,我使用的是Oracle SQL Developer,我有一个名为Stores的表,带有一个位置标识符,指向另一个名为“location”的表,该表指向自身,以标识自己的国家/城市等 我想计算某个国家有多少家商店,但查询只计算同一个城市有多少家 查询是(问题在计数部分,翻译:tienda store,lugar location): 结果是这样的: Direccion |Ciudad |Pais |Cantidad address 4|Miami |USA | 1 ad
Direccion |Ciudad |Pais |Cantidad
address 4|Miami |USA | 1
address 3|New York|USA | 1
address 2|Toronto |Canada| 2
address 1|Toronto |Canada| 2
何时应显示:
Direccion |Ciudad |Pais |Cantidad
address 4|Miami |USA | 2
address 3|New York|USA | 2
address 2|Toronto |Canada| 2
address 1|Toronto |Canada| 2
我假设它计算的是相同的城市,但我不知道如何让它计算国家
我想这正是你想要的:
select t.direccion, lc.nombre as ciudad, lp.nombre as pais,
count(*) over (partition by lp.nombre)
from tienda t join
lugar lc
on t.fk_lugar = lc.id and lc.tipo = 'CIUDAD' join
lugar lp
on lc.?? = lp.id and lp.tipo = 'PAIS';
关键思想是上的
计数(*)。一个窗口函数可以进行您想要的计数。我不清楚正确的join
键是用于pais
的,我想这正是您想要的:
select t.direccion, lc.nombre as ciudad, lp.nombre as pais,
count(*) over (partition by lp.nombre)
from tienda t join
lugar lc
on t.fk_lugar = lc.id and lc.tipo = 'CIUDAD' join
lugar lp
on lc.?? = lp.id and lp.tipo = 'PAIS';
关键思想是
上的计数(*)。一个窗口函数可以进行您想要的计数。我不清楚什么是正确的join
键用于pais
您可以显示您的数据集吗?编辑以添加数据集图片@realspiritualsIt将更好地以文本形式保存数据,最好是以我们可以重建的格式保存数据。但是从这些图片来看,所有美国商店的cantidad值应该是3(来自芝加哥、迈阿密和达拉斯的商店),所有加拿大商店的cantidad值应该是3(来自多伦多的三家商店)?其他所有的商店都应该排成一行?确切地说,美国、加拿大、德国和英国的“Cantidad”应该有3家,而其他国家(如比利时、丹麦等)应该有1家。我马上会尝试添加create和insert序列,我认为Gordon当时展示的是正确的,在lc.fk_lugar=lp.id上有?或者无论如何关闭,它提取对象字段的方式不同。请显示您的数据集好吗?编辑以添加数据集图片@realspiritualsIt最好将数据以文本形式保存,最好是以我们可以重建的格式保存。但是从这些图片来看,所有美国商店的cantidad值应该是3(来自芝加哥、迈阿密和达拉斯的商店),所有加拿大商店的cantidad值应该是3(来自多伦多的三家商店)?其他所有的商店都应该排成一行?确切地说,美国、加拿大、德国和英国的“Cantidad”应该有3家,而其他国家(如比利时、丹麦等)应该有1家。我马上会尝试添加create和insert序列,我认为Gordon当时展示的是正确的,在lc.fk_lugar=lp.id上有?或者无论如何关闭,它没有以相同的方式提取对象字段。抱歉,没有说得足够清楚。卢加l指的是一座城市,卢加l指的是一个国家。所以lu.id指向这个国家的身份证号码。我添加了数据集图片以供更多参考之前添加了错误的数据,谢谢您的回答。很好,抱歉,我说得不够清楚。卢加l指的是一座城市,卢加l指的是一个国家。所以lu.id指向这个国家的身份证号码。我添加了数据集图片以供更多参考之前添加了错误的数据,谢谢您的回答。现在效果很好