计算不同国家的几家商店

时间:2016-06-02 15:22:36

标签: sql oracle count

我使用的是Oracle SQL Developer,我有一个名为Stores的表,其中一个位置标识符指向另一个名为" Location"的表,它指向自己以识别它'自己的国家/城市/等。

我想知道某个国家/地区有多少商店,但查询只计算同一城市的商店数量

查询是(问题在计数部分,翻译:tienda-store,lugar-location):

SELECT ti.nro||' '|| ti.calle   as "Direccion",l.nombre "Ciudad", lu.nombre "Pais", 
(SELECT COUNT(*) FROM tienda tie WHERE tie.fk_lugar = l.id) "Cantidad"

FROM tienda t,THE (SELECT direccion from tienda WHERE tienda.id=t.id) 
ti,lugar l, lugar lu

WHERE t.fk_lugar=l.id and l.tipo='CIUDAD' and 
l.lugar_id=lu.id and lu.tipo = 'PAIS'

结果是这样的:

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   

我假设它计算相同的城市,我无法弄清楚如何让它计算国家

Tienda inserts

Lugar inserts

1 个答案:

答案 0 :(得分: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';

关键的想法是count(*) over。窗口功能可以完成您想要的计数。我不清楚问题join的正确pais键是什么。

相关问题