You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按分组聚合医疗数据:就诊等级统计与费用汇总需求

医疗就诊数据聚合解决方案

原始数据

LocationPT_IDVisit_DTDischarge_DTInjuryLevelInjuryCodeClaim_IDCost
Ab1000101-01-202101-03-20217I03clm078-400
Ab1000101-01-202101-03-20211I03clm079400
Ab1000101-01-202101-03-20213I03clm068500
Ab1000101-01-202101-03-20213I03clm00875
Ab2000204-11-202104-12-20215I03clm1111000
Ab2000205-01-202105-03-20215I03clm176900
Ab2000208-08-202108-09-20216I03clm1872000

需求说明

  • 同一患者同一次就诊(相同Visit_DT和Discharge_DT视为一次就诊),取该次就诊的最大InjuryLevel
  • 按患者分组统计:
    • InjuryLevel1to5:最大InjuryLevel在1-5区间的就诊次数
    • InjuryLevel6to10:最大InjuryLevel在6-10区间的就诊次数
    • TotalCost:该患者所有索赔记录的费用总和
  • 目标输出格式:
LocationPT_IDInjuryLevel1to5InjuryLevel6to10TotalCost
Ab1000101575
Ab20002213900

解决方案(SQL实现)

完整代码

WITH visit_summary AS (
    SELECT
        Location,
        PT_ID,
        Visit_DT,
        Discharge_DT,
        MAX(InjuryLevel) AS max_injury_level
    FROM
        original_table
    GROUP BY
        Location, PT_ID, Visit_DT, Discharge_DT
),
patient_total_cost AS (
    SELECT
        PT_ID,
        SUM(Cost) AS TotalCost
    FROM
        original_table
    GROUP BY
        PT_ID
)
SELECT
    vs.Location,
    vs.PT_ID,
    SUM(CASE WHEN vs.max_injury_level BETWEEN 1 AND 5 THEN 1 ELSE 0 END) AS InjuryLevel1to5,
    SUM(CASE WHEN vs.max_injury_level BETWEEN 6 AND 10 THEN 1 ELSE 0 END) AS InjuryLevel6to10,
    ptc.TotalCost
FROM
    visit_summary vs
JOIN
    patient_total_cost ptc ON vs.PT_ID = ptc.PT_ID
GROUP BY
    vs.Location, vs.PT_ID, ptc.TotalCost;

代码说明

  1. visit_summary:按患者、就诊日期分组,计算每次就诊的最高损伤等级,确保同一次就诊只保留最高等级记录
  2. patient_total_cost:单独计算每个患者的总费用,避免重复统计
  3. 最终查询通过CASE WHEN逻辑统计不同区间的就诊次数,关联总费用后得到目标结果

内容的提问来源于stack exchange,提问作者Trevor M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:51:31