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

如何提取同一eeid同一日期下无其他payid的time=0的payid数据

解决方案:提取符合条件的payid记录

需求明确:筛选出同一eeid在同一日期下仅存在一条payid记录,且该记录time=0的数据。以下是两种可行的SQL实现方案:

方法一:子查询+GROUP BY统计

先通过分组统计筛选出仅含单个payid的eeid+date组合,再关联原表过滤time=0的记录:

SELECT t.*
FROM your_table t
INNER JOIN (
    SELECT date, eeid
    FROM your_table
    GROUP BY date, eeid
    HAVING COUNT(DISTINCT payid) = 1
) AS sub 
    ON t.date = sub.date 
    AND t.eeid = sub.eeid
WHERE t.time = 0;

说明:用COUNT(DISTINCT payid)是为了规避同一eeid+date下payid重复出现的场景;如果你的数据中payid不会重复,也可以简化为COUNT(payid) = 1。

方法二:窗口函数(高效推荐)

利用窗口函数直接计算每个分组内的payid数量,一步筛选目标记录:

SELECT date, eeid, payid, time
FROM (
    SELECT 
        *,
        COUNT(DISTINCT payid) OVER (PARTITION BY date, eeid) AS payid_count
    FROM your_table
) AS t
WHERE payid_count = 1 AND time = 0;

说明:窗口函数PARTITION BY date, eeid会按日期和eeid分组计算payid数量,无需额外关联操作,数据量大时性能更优。

注意事项

  • 请将代码中的your_table替换为你的实际表名
  • 如果payid存在NULL值,需根据业务逻辑调整统计逻辑(例如用COUNT(*)统计分组内总记录数)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 23:55:38