来自 postgres 上多个表的聚合不起作用

aggregating from multiple tables on posgres not working

我需要计算 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

如果您只看一个 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

但是,如果您想获取所有银行的所有统计数据,假设您有一个 table 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