我有两张桌子。包含患者和医院的领域的“tbl_a”,以及作为咨询的“tbl_b”。 现在我的问题是只对“tbl_b”中有4条记录的患者进行计数,这样如果患者在“tbl_b”中有4条记录,则计为1。 我希望这个结果只使用mysql coz,我需要在事件调度程序中运行。 总之,我想统计在每家医院都有4次咨询的所有患者。有人可以帮我吗?
答案 0 :(得分:1)
使用此解决方案:
SELECT patient
FROM tbl_b
GROUP BY patient
HAVING COUNT(1) >= 4
如果您只是希望 完全 四次咨询而不是四次或更多次的患者,请将>=
更改为=
。
也许你想要那些有四次或更多次咨询的患者的 计算 ......在这种情况下你可以将上面的内容包裹起来{ {1}}并计算行数:
SELECT
答案 1 :(得分:1)
假设患者和患者的咨询由patient_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个
希望这会有所帮助
答案 2 :(得分: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
答案 3 :(得分:0)
试试这个
SELECT
COUNT(consultation )/4 AS Patient_Number
FROM
tbl_b
GROUP BY
consultation
HAVING
(COUNT(consultation ) % 4) = 0