Mysql 如何将表2从表1更新为表2中的相应条目?
我想统计不同表中银行的出现次数,并在FinalTable的相应列中进行更新 银行表:Mysql 如何将表2从表1更新为表2中的相应条目?,mysql,sql,database,union,Mysql,Sql,Database,Union,我想统计不同表中银行的出现次数,并在FinalTable的相应列中进行更新 银行表: BankName ErrorCode SBI 200 ICICI 200 SBI 400 SBI 500 SBI 503 ATMTable: BankName ErrorCode ICICI 200 ICICI 400 ICICI 400 SBI
BankName ErrorCode
SBI 200
ICICI 200
SBI 400
SBI 500
SBI 503
ATMTable:
BankName ErrorCode
ICICI 200
ICICI 400
ICICI 400
SBI 500
SBI 503
MitraTable:
BankName ErrorCode
ICICI 200
ICICI 200
SBI 400
SBI 500
SBI 503
PNB 501
财务报表:
BankName BankCount ATMCount MitraCount TotalCount
ICICI 1 3 2 6
SBI 4 2 3 9
PNB 0 0 1 1
我想计算不同银行的占用率,并在FinalTable中设置值。您可以使用
UNION ALL
和条件聚合:
SELECT BankName,
COUNT(CASE WHEN src = 'Bank' THEN 1 END) AS BankCount,
COUNT(CASE WHEN src = 'ATM' THEN 1 END) AS ATMCount,
COUNT(CASE WHEN src = 'Mitra' THEN 1 END) AS MitraCount,
COUNT(*) AS TotalCount
FROM (
SELECT BankName, 'Bank' AS src
FROM BankTable
UNION ALL
SELECT BankName, 'ATM' AS src
FROM ATMTable
UNION ALL
SELECT BankName, 'Mitra' AS src
FROM MitraTable) AS t
GROUP BY BankName
字段src
用于将源表返回到使用UNION ALL
操作结果的外部查询。使用此字段,我们可以执行条件聚合,以统计每个源表中每个银行的发生率。尝试以下操作:
SELECT BankName,
SUM(BankCount) AS BankCount,
SUM(ATMCount) AS ATMCount,
SUM(MitraCount) AS MitraCount,
SUM(BankCount + ATMCount + MitraCount) AS TotalCount
FROM (SELECT BankName,
COUNT(ErrorCode) AS BankCount,
0 AS ATMCount,
0 AS MitraCount
FROM BankTable
GROUP BY BankName
UNION
SELECT BankName,
0 AS BankCount,
COUNT(ErrorCode) AS ATMCount,
0 AS MitraCount
FROM ATMTable
GROUP BY BankName
UNION
SELECT BankName,
0 AS BankCount,
0 AS ATMCount,
COUNT(ErrorCode) AS MitraCount
FROM MitraTable
GROUP BY BankName
) AS A
GROUP BY BankName;
还包括其他RDBMS标记。。。使其成为MyStry。我删除了不兼容的数据库标记。请仅使用您实际使用的数据库标记问题。请阅读-总结是,这不是向志愿者提问的理想方式,可能会对获得答案产生反作用。请不要将此添加到您的问题中。