我正在使用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 | | |
------------------------------------------------
如果麸皮多于国民,则此平均值显示空行。
答案 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;