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

如何按WearerID分组后根据BadgeType优先级合并剂量报告数据

如何按WearerID分组后根据BadgeType优先级合并剂量报告数据

嘿,这个需求在剂量监测数据处理里太常见了!我来给你拆解一下怎么实现——核心就是针对每个剂量字段,优先用对应专用徽章的数据,没有的话就 fallback 到Generic通用徽章的值。

下面给你两种实用的SQL写法,适配大多数主流数据库(比如MySQL、SQL Server、PostgreSQL这些):

方法一:条件聚合(最直观易懂)

这种方式直接通过分组+条件判断来提取对应优先级的值,逻辑清晰,维护起来也方便:

SELECT
    WearerID,
    -- 优先取DeepDose专用徽章的剂量,没有就用Generic的
    COALESCE(MAX(CASE WHEN BadgeType = 'DeepDose' THEN DeepDose END), MAX(CASE WHEN BadgeType = 'Generic' THEN DeepDose END)) AS DeepDose,
    -- 优先取Eye专用徽章的剂量,没有就用Generic的
    COALESCE(MAX(CASE WHEN BadgeType = 'Eye' THEN EyeDose END), MAX(CASE WHEN BadgeType = 'Generic' THEN EyeDose END)) AS EyeDose,
    -- ExtremityDose这里默认用Generic的(你没提对应专用徽章)
    MAX(CASE WHEN BadgeType = 'Generic' THEN ExtremityDose END) AS ExtremityDose
FROM BadgeResults
GROUP BY WearerID;

小解释:

  • CASE语句会精准筛选出对应BadgeType的剂量值,MAX在这里是为了把单个有效值提取出来(默认每个WearerID对应每种BadgeType只有一条记录对吧?)
  • COALESCE函数会先尝试用前面的专用徽章值,要是没有(也就是该WearerID没有对应专用徽章),就自动用后面的Generic值。

方法二:窗口函数(更灵活,适合复杂场景)

如果之后你需要扩展更多徽章类型,或者要处理同类型多记录的情况,用窗口函数排序取优先级最高的值会更灵活:

WITH RankedBadges AS (
    SELECT
        *,
        -- 给徽章类型设置优先级:专用徽章 > Generic通用徽章
        CASE BadgeType
            WHEN 'Eye' THEN 1
            WHEN 'DeepDose' THEN 1
            WHEN 'Generic' THEN 2
        END AS Priority
    FROM BadgeResults
)
SELECT DISTINCT
    WearerID,
    -- 优先取DeepDose专用徽章的剂量
    FIRST_VALUE(DeepDose) OVER (
        PARTITION BY WearerID 
        ORDER BY Priority, CASE WHEN BadgeType='DeepDose' THEN 1 ELSE 2 END
    ) AS DeepDose,
    -- 优先取Eye专用徽章的剂量
    FIRST_VALUE(EyeDose) OVER (
        PARTITION BY WearerID 
        ORDER BY Priority, CASE WHEN BadgeType='Eye' THEN 1 ELSE 2 END
    ) AS EyeDose,
    -- ExtremityDose取优先级最高的(也就是Generic)
    FIRST_VALUE(ExtremityDose) OVER (PARTITION BY WearerID ORDER BY Priority) AS ExtremityDose
FROM RankedBadges;

小提示:

要是某个WearerID可能有多个同类型的徽章记录(比如同一类型的多次报告),你可以在CTE的排序里加个日期字段,比如ORDER BY Priority, ReportDate DESC,这样就能取最新的报告数据啦。

备注:内容来源于stack exchange,提问作者AccessUser

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 11:28:03