USEGEAR

导航

pg的计算百分数的问题

SELECT 
   cast("dept_id" as varchar(32)) , 

   cast("dept_name" as varchar(30)) AS "病区", 
   "total_surgical_patients" AS "手术总数", 
   "total_preop_medication_patients" AS "用药总数", 
   "total_discharged_patients" AS "出院总数",
   

    CASE 
        WHEN "total_surgical_patients" = 0 THEN NULL 
        ELSE ROUND(("total_preop_medication_patients"/NULLIF("total_surgical_patients", 0))*100, 2)::varchar(20) 
    END AS "按所在科室用药率%",
    CASE 
        WHEN "total_discharged_patients" = 0 THEN NULL 
        ELSE ROUND(("total_preop_medication_patients"/NULLIF("total_surgical_patients", 0))*100, 2)::varchar(20) 
    END AS "按出院科室用药率%",

    cast("dept_parentcode" as varchar(40))
 

FROM "RemoteData"."fn_getantidruguse_surgery"('2021/3/1',  '2024/3/30', 'preoperative_medication', ' and 1=1 ')
order by "dept_id"

出现摸不着头脑的问题,是分母异常自动屏蔽处理了,导致计算百分数是0。因此需要检查分母NULLIF()

posted on 2024-03-30 17:53  USEGEAR  阅读(28)  评论(0编辑  收藏  举报