MySQL - 计算患者数量

时间:2015-09-27 00:08:27

标签: mysql

我有一个patient表和一个reference表,如下所示

patient

id         name
1          Doni
2          Doni
3          Doni
4          Tejo
5          Bambang

reference

patient_id    refer_to_patient_id
1             2
2             3
3             null

refer_to_patient_id null表示患者姓名Doni被转介到另一家医院,但其提到的医院尚未创建记录。

我需要计算他们有多少病人。上述示例应返回3名患者,因为记录ID 1,2,3是同一患者。 即使对于同一患者,患者姓名也可能不同,因为他们是从不同的医院输入的。

PS:患者表实际上不是患者实体,它是医疗记录(EMR),医院可以将患者(或EMR)转诊到另一家医院,并将其计为单个患者。

2 个答案:

答案 0 :(得分:1)

虽然最初似乎需要解析完整的树,但我认为您提出的问题就像

一样简单
select 
  count(distinct pat.id) patients
from 
  patient pat 
  left outer join reference ref on pat.id = ref.patient_id
where 
  ref.patient_id is null;

也就是说,只有当id没有到另一个id的地图时,才应计算id。换句话说,任何没有映射值的{{1}}值都是层次结构的末尾。

答案 1 :(得分:0)

MySQL有DISTINCT个关键字。

SELECT count(DISTINCT name)
FROM patient;