-1

我有两张桌子。“tbl_a”包含患者和医院的字段,“tbl_b”是咨询。现在我的问题是只计算在“tbl_b”中有 4 条记录的患者,这样如果患者在“tbl_b”中有 4 条记录,则它计为 1。我只希望在使用 mysql coz 时得到这个结果,我需要这个在事件调度程序中运行。简而言之,我想计算在每家医院进行 4 次咨询的所有患者。有人可以帮我吗?

4

4 回答 4

1

假设表患者和咨询由患者 ID 加入

SELECT * FROM patients
JOIN (SELECT IF(COUNT(patient_id) = 4, patient_id, NULL) AS con 
    FROM consultation 
    GROUP BY patient_id) AS con 
        ON con.patient_id = patients.patient_id
GROUP BY patient_id

连接表将只获得来自咨询的数字,即 4,而所有其他数字均为 NULL,因此该案例中的连接子句将导致患者的咨询记录总数仅为 4

希望这可以帮助

于 2012-07-10T08:06:20.250 回答
1

使用此解决方案:

SELECT patient
FROM tbl_b
GROUP BY patient
HAVING COUNT(1) >= 4

如果您只想让患者进行四次咨询,而不是四次或更多次,请更改为>==

也许您想要计算有四次或更多咨询的患者的数量......在这种情况下,您可以将上面的内容包装起来SELECT并计算行数:

SELECT COUNT(1)
FROM
(    
    SELECT patient
    FROM tbl_b
    GROUP BY patient
    HAVING COUNT(1) >= 4
) a
于 2012-07-10T07:38:02.980 回答
0

尝试这个

 SELECT 
         COUNT(consultation )/4 AS Patient_Number 
 FROM 
         tbl_b

 GROUP BY 
         consultation 
 HAVING
         (COUNT(consultation ) % 4) = 0
于 2012-07-10T08:37:39.283 回答
0

尝试这个 ::

Select *, count(1) 
from table_a a 
inner join table_b b 
inner join on (a.patient_id=b.patient_id) 
group by b.patient_id having count(1) =4 
于 2012-07-10T07:35:45.133 回答