2017-05-30 38 views
0

我正在使用PostgreSQL,并且我有两个基本要求,即获得品牌名称和我在公园中的汽车编号。如何显示两个请求导致相同的选项卡?

请求1:获取品牌榜和品牌名称中的数字

SELECT brand.name , COUNT(i) FROM brand GROUP BY brand.name 

请求2:获取用户列表,并通过用户国籍

的号码和我的第二个要求是获得国籍用户数

SELECT user.nationality , COUNT(i) FROM user GROUP BY user.nationality 

问题是每个请求是从另一个独立的,而且我想表明它在相同的请求

------------------------------------------------ 
|brand | number | nationality | number | 
------------------------------------------------ 
|Audi  | 12  | Chine  | 5  | 
|RENAULT | 5   | Portu  | 4  | 
|HYUNDAI | 2   |    |   | 
------------------------------------------------ 

这意味着显示一个空行的情况下,还有比国籍的更麸。

+0

但是,为什么在同样的结果结合起来完全不相关的数据? – jarlh

+0

我在报告中需要此请求。 –

+0

在不同窗口中使用窗口定位。如果想要举例,请提供结构和数据样本 –

回答

4

听起来像一个奇怪的要求,但这样的事情应该工作:

SELECT b.*, u.* 
from (
    select name, 
      COUNT(*) as brand_count, 
      row_number() over (order by count(*) desc) as rn 
    FROM brand 
    GROUP BY name 
) b 
    full outer join (
     SELECT nationality, 
      COUNT(*) as user_count, 
      row_number() over (order by count(*) desc) as rn 
     FROM "user" 
     GROUP BY nationality 
) u on b.rn = u.rn 
order by rn; 
相关问题