计数错误

时间:2017-04-24 01:07:09

标签: sql

我的查询有问题。我将使用一个例子。因此,对于名为'脓肿'的疾病名称,这在我诊断的表中已被诊断两次,但我只得到1的计数。但是当我在诊断表中使用该病毒检查时,我得到2.请重建我的答案如下!

问题: 列出所有疾病名称和每种疾病被诊断出的次数 诊所。该清单很少被发现疾病,所以只显示有疾病的疾病 诊断计数小于5.注意:零小于5.提供SQL查询和数据 结果的可视化。

mysql(lookatabscess)

Diagnosedrecord

我的回答:

SELECT disease.name, COUNT(*) AS number_of_disease_diagnosed
FROM disease
WHERE diseaseid IN (SELECT DISTINCT diseaseid FROM diagnosed)
GROUP BY disease.name
HAVING COUNT(*) <= 5
UNION
SELECT diseaseid,0
FROM disease
WHERE diseaseid NOT IN (SELECT DISTINCT diseaseid FROM diagnosed);

1 个答案:

答案 0 :(得分:0)

我认为问题出在你的查询上。正如囚徒暗示的那样,你应该使用连接而不是在子查询中使用。

具体来说,我会对此查询使用外部联接,例如:

select disease.name, count(diagnosed.diagnosedid) as Count
from
  disease
  left outer join diagnosed on disease.diseaseID = diagnosed.diseaseID
group by
  disease.Name
having
  count(diagnosed.diagnosedid) <= 5

外部联接将为您提供疾病的每一行,并从诊断的表中匹配行(它们存在的位置)。然后使用GROUP BY&amp; HAVING子句将过滤到您寻找的结果。

希望这有帮助。