如何在同一个标​​签中显示两个请求?

时间:2017-05-30 11:17:06

标签: sql postgresql

我正在使用PostgreSQL,我有两个基本请求,它们可以获得一个品牌的名称以及我在parc中拥有的汽车数量。

请求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         |              |         |
 ------------------------------------------------

如果麸皮多于国民,则此平均值显示空行。

1 个答案:

答案 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;