[英]MySQL Group By Count with Zero
我有以下查詢:
SELECT apdr.patient_id,
COUNT(apdr.patient_id)
AS x_ray_result
FROM apdr
WHERE apdr.type_of_test IN ('x_ray_opinion_1', 'x_ray_opinion_2')
AND apdr.interpretation LIKE 'kochs'
GROUP BY apdr.patient_id
它返回解釋為“ kochs”的患者數。 我該如何修改它以在輸出中使用相應的Patient_id將計數也設為0。
任何幫助表示贊賞。
我得到從1開始的計數,我需要在查詢中也得到0的查詢。
您可以使用case語句返回條件計數,而不是將條件放在where子句中。 看到:
SELECT apdr.patient_id,
COUNT(CASE WHEN apdr.type_of_test IN ('x_ray_opinion_1', 'x_ray_opinion_2')
AND apdr.interpretation LIKE 'kochs'
THEN adpr.patient_id
END CASE) AS x_ray_result
FROM apdr
GROUP BY apdr.patient_id
嘗試
SELECT a1.patient_id,
(SELECT COUNT(*) FROM apdr a2
WHERE a2.interpretation LIKE 'kochs'
AND a1.patient_id=a2.patient_id) AS x_ray_result
FROM apdr a1
WHERE a1.type_of_test IN ('x_ray_opinion_1', 'x_ray_opinion_2')
GROUP BY a1.patient_id
編輯:我忘記了WHERE
子句
從apdr左連接中選擇不同的a.patient_id,if(b.x_ray_result為null,0,b.x_ray_result)作為x_ray_result(SELECT Patient_id,COUNT(Patient_id)AS x_ray_result從apdr WHERE type_of_test IN('x_ray_opinion_1','_2_ray_resin )並在a.patient_id = b.patient_id上解釋類似'kochs'GROUP BY Patient_id)b;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.