从posgres上的多个表聚合不起作用

时间:2015-08-14 06:19:46

标签: mysql postgresql subquery aggregate-functions

我需要计算来自2个表的数据,并在单个输出中显示它们

我有2张桌子

branches 
atms

我需要显示如下输出

bank_id atms branches
1        20  30   

下面的查询在mysql上完美运行但在posgres中没有运气

SELECT * from (
    (SELECT count(*)  FROM branches where bank_id=30) as branch_count  ,

    (SELECT count(*)   FROM atms where  bank_id=30) as atm_count
    )tmp

1 个答案:

答案 0 :(得分:1)

如果您只是在查看一个bank_id,则不需要那么多子查询:

SELECT  (SELECT count(*)  FROM branches where bank_id=30) as branch_count  ,
        (SELECT count(*)   FROM atms where  bank_id=30) as atm_count

但是,如果你想得到所有银行的所有统计数据,假设你有一个表banks来保存所有bank_ids,那么下面的查询会有所帮助:

SELECT  *
FROM    banks B
        LEFT JOIN (SELECT BR.bank_id, count(*) branch_count FROM branches BR GROUP BY BR.bank_id) as BC
             ON BC.bank_id = B.bank_id
        LEFT JOIN (SELECT AT.bank_id, count(*) atm_count  FROM atms AT GROUP BY AT.bank_id) as AC
             ON AC.bank_id = B.bank_id