gpt4 book ai didi

mysql - 应该使用 SQL Union 还是 Join?

转载 作者:太空宇宙 更新时间:2023-11-03 11:08:13 26 4
gpt4 key购买 nike

我正在尝试获取我拥有的 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 在 patients 表中有 6 个实例,在 physicians 表中有 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`

最佳答案

由于这些是不相关的表,您需要使用 UNION。此外,COUNTSUM 是不同的函数,在本例中,您正在查找 COUNT。 SUM 会将所有值相加,而 COUNT 将为您提供该行在 GROUP 中找到的次数。这样的事情怎么样?

SELECT zip_code,COUNT(*) FROM (
SELECT zip_code AS Num_Patient_Calls FROM patients
UNION ALL
SELECT zip_code AS Num_Physician_Calls FROM physicians
) AS new_table
GROUP BY zip_code

关于mysql - 应该使用 SQL Union 还是 Join?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10418973/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com