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