在生成下面的SQL语句时,我总计不能达到100%。
SQL:
SELECT T.EventTypeName,
ROUND(((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE NULL END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE NULL END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE NULL END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE NULL END))),0) AS Nursing ,
ROUND(((COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE NULL END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE NULL END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE NULL END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE NULL END))),0) AS PatientEldery,
ROUND(((COUNT(CASE Disability WHEN 1 THEN 1 ELSE NULL END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE NULL END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE NULL END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE NULL END))),0) AS Disability
FROM StEvent S, EventType T WHERE S.EventTypeId = T.EventTypeId GROUP BY T.EventTypeName
我希望总数为100%
答案 0 :(得分:0)
改为使用Sum并将null替换为0
SELECT T.EventTypeName,
ROUND(((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE 0 END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE 0 END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE 0 END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE 0 END))),0) AS Nursing ,
ROUND(((COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE 0 END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE 0 END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE 0 END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE 0 END))),0) AS PatientEldery,
ROUND(((COUNT(CASE Disability WHEN 1 THEN 1 ELSE 0 END)) * 100 / ((COUNT(CASE Nursing WHEN 1 THEN 1 ELSE 0 END)) + COUNT(CASE PatientEldery WHEN 1 THEN 1 ELSE 0 END) + COUNT(CASE Disability WHEN 1 THEN 1 ELSE 0 END))),0) AS Disability
FROM StEvent S, EventType T WHERE S.EventTypeId = T.EventTypeId GROUP BY T.EventTypeName