如何系统识别同时包含'O'和'C'状态码的订单?
订单状态识别的简化实现方案
核心逻辑:直接聚焦有效状态('O'和'C'),按订单编号分组后,判断组内是否同时存在这两种状态
SQL实现示例:
SELECT order_id FROM order_records WHERE status IN ('O', 'C') GROUP BY order_id HAVING COUNT(DISTINCT status) = 2;步骤说明:
- 先过滤掉无关状态记录,只保留'O'和'C'的数据
- 按订单ID分组后,统计每组内唯一状态的数量
- 唯一状态数等于2的订单,就是同时包含两种目标状态的订单
Python Pandas实现示例:
# 过滤仅含目标状态的记录 valid_records = df[df['status'].isin(['O', 'C'])] # 分组统计唯一状态数,筛选符合条件的订单ID target_orders = valid_records.groupby('order_id')['status'].nunique() target_orders = target_orders[target_orders == 2].index.tolist()
对比原方案:无需新增列做标记求和,直接通过去重计数完成判断,代码更简洁,执行效率也更高,减少了不必要的中间计算步骤
内容的提问来源于stack exchange,提问作者gban
相关产品推荐
相关产品推荐

