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

SQL多列多筛选条件查询:如何筛选符合订单时段状态要求的User_ID

符合需求的SQL查询实现

需求梳理

  • 数据表包含3个字段:User_ID(用户ID)、order_status(订单状态,取值为success/failure)、Date(订单日期)
  • 需要筛选同时满足以下3个条件的User_ID:
    • 2021年1月-3月有下单记录(无论订单成功失败均有效)
    • 2021年7月-9月有下单记录(无论订单成功失败均有效)
    • 2021年4月-6月没有成功订单记录(该时间段的失败订单不影响筛选结果)

参考SQL代码

以下代码假设表名为order_records,如果实际表名不同可直接替换:

SELECT User_ID
FROM order_records
WHERE Date BETWEEN '2021-01-01' AND '2021-09-30'
GROUP BY User_ID
HAVING 
    -- 校验2021年1-3月有下单
    SUM(CASE WHEN Date BETWEEN '2021-01-01' AND '2021-03-31' THEN 1 ELSE 0 END) > 0
    -- 校验2021年7-9月有下单
    AND SUM(CASE WHEN Date BETWEEN '2021-07-01' AND '2021-09-30' THEN 1 ELSE 0 END) > 0
    -- 校验2021年4-6月无成功订单
    AND SUM(CASE WHEN Date BETWEEN '2021-04-01' AND '2021-06-30' AND order_status = 'success' THEN 1 ELSE 0 END) = 0;

逻辑说明

  • 先过滤2021年1-9月的所有订单,缩小计算范围提升查询效率
  • 按User_ID分组后用聚合函数判断每个用户的三个条件是否满足,避免多次子查询关联带来的性能损耗

注意:如果你的数据库日期存储格式不是YYYY-MM-DD,需要对应调整日期过滤的写法,确保日期判断逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:06:03