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

Oracle如何查询客户同一日在不同门店产生多笔消费的记录

解决思路

要实现「同一天内至少2笔消费来自不同门店」的过滤,只需在原有逻辑基础上做两处调整:

  • 子查询分组后,通过COUNT(DISTINCT PurShopId) >= 2校验同一个客户同一天的消费是否来自不同门店,该条件已经隐含了消费笔数≥2的要求,无需重复校验消费笔数(如果有额外的笔数要求可以叠加条件)
  • 完善主表和子查询的关联规则,新增日期维度的匹配,避免同一个客户其他日期的消费被误关联进结果
  • 注意原SQL中子查询的表名写为Purchases,如果和主表Purchase是同一张表需要统一表名,避免执行报错
修正后的查询语句
SELECT 
    p.PurClientId, 
    p.PurDate, 
    p.PurId,
    p.PurShopId -- 可根据需要选择是否展示门店ID字段
FROM Purchase p
INNER JOIN (
    SELECT 
        PurClientId,
        to_date(PurDate) AS pur_date_day
    FROM Purchase
    GROUP BY 
        PurClientId, 
        to_date(PurDate)
    -- 核心过滤条件:同一天内消费涉及至少2家不同门店
    HAVING COUNT(DISTINCT PurShopId) >= 2
) k 
ON 
    k.PurClientId = p.PurClientId
    AND to_date(p.PurDate) = k.pur_date_day;

如果业务需要同时满足更高的笔数要求,比如同一天至少3笔消费、且来自至少2家不同门店,只需修改HAVING子句叠加条件即可:

HAVING COUNT(DISTINCT PurShopId) >= 2 AND COUNT(PurId) >= 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 04:45:05