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

SQL查询:基于另外两列条件筛选目标列小于分组最小成功时间的记录

解决方案

你可以通过子查询先计算每个用户succeeds='yes'的最早时间,再关联原表过滤出符合条件的记录即可。

实现步骤

  • 第一步:用聚合查询计算每个用户首次成功的最小时间
  • 第二步:将原表与上述计算结果按user_name关联
  • 第三步:过滤出原表time字段小于对应用户首次成功时间的记录

示例SQL代码

假设你的表名为user_records,SQL写法如下:

SELECT 
  t1.user_name,
  t1.time
FROM 
  user_records t1
INNER JOIN (
  SELECT 
    user_name,
    MIN(time) AS first_success_time
  FROM user_records
  WHERE succeeds = 'yes'
  GROUP BY user_name
) t2 ON t1.user_name = t2.user_name
WHERE t1.time < t2.first_success_time;

结果说明

按照你给出的测试场景,上述查询的输出结果会和预期一致:

  • bill 对应的符合记录为 0300
  • annie 无符合记录(说明annie要么没有succeeds='yes'的记录,要么所有记录时间都不早于首次成功时间)
  • jonny 对应的符合记录为 0900、1000

补充说明

如果部分用户没有任何succeeds='yes'的记录,上述查询会直接过滤掉这部分用户。如果你需要保留这部分用户展示为空结果,可以将INNER JOIN改为LEFT JOIN,同时调整WHERE条件增加判空逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 02:06:03