左边在桌子上加入COUNT

时间:2013-06-18 20:03:55

标签: sql postgresql count left-join

我有两张桌子:

puid | personid | ptitle
----------------------------
1    | 200      | richard
2    | 201      | swiss

suid | personidref | stitle
----------------------------
1    | 200         | alf
2    | 201         | lando
3    | 200         | willis
4    | 201         | luke
5    | 201         | kojak
6    | 200         | r2-d2
7    | 201         | jabba

我试图用表二来计算连接数。我试图找出使用generate_series或子选择,但我不能面对语法。

英语:请向我展示表一中每个独特的人,并列出表二中每个条目的计数。

示例输出:

puid | personid | ptitle  | count
---------------------------------
1    | 200      | richard | 3
2    | 201      | swiss   | 4

这是一个简单的子查询,generate_series是正确的工具吗?

1 个答案:

答案 0 :(得分:2)

select *
from
    t1
    left join
    (
        select personidref, count(*) total
        from t2
        group by personidref
    ) s using(personidref)
order by puid

请注意,在加入之前进行聚合可能比在之后执行聚合具有性能提升。