我正在尝试获取我拥有的 2 张桌子(患者和医生)的邮政编码和该邮政编码的呼叫次数。我通过计算邮政编码来获得#of 呼叫,例如,如果有 5 名患者的邮政编码为 79555,那么计数将为 5。如果患者表有 3 人使用该邮政编码,而医生表有 4 人,它应该返回邮政编码和 7。我尝试了下面的联合。乍一看它看起来像我想要的,但我想总结重复的邮政编码,我可以在联合中使用 sum 函数吗?还是我必须创建一个联接?
SELECT zip_code, COUNT(zip_code) AS Num_Patient_Calls FROM patients GROUP BY zip_code
UNION ALL
SELECT zip_code, COUNT(zip_code) AS Num_Physician_Calls FROM physicians GROUP BY zip_code
编辑:解决方案 我使用 Gordon 和 dweiss 的响应来生成这个 SQL 代码。它做我想要的,即从不相关的表中获取两个可能具有或不具有相同值的字段,计算每个表中具有该值的记录数,然后将两个表的结果相加。示例:患者表中邮政编码 99709 的 6 个实例,医师表中的 1 个实例,显示的值为 99709 - 7。
SELECT zip_code, SUM(Patient_Calls) FROM (
SELECT zip_code, COUNT(zip_code) AS Patient_Calls FROM patients GROUP BY zip_code
UNION ALL
SELECT zip_code, COUNT(zip_code) AS Physician_Calls FROM physicians GROUP BY zip_code
) AS new_table
GROUP BY zip_code ORDER BY `new_table`.`zip_code`