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