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

如何筛选含非NULL blocking_session_id的distinct collection_time分组

解决思路与SQL实现

要筛选出至少包含1条非NULL blocking_session_id的去重collection_time,以下是几种直接可用的实现方式:

方法1:GROUP BY + HAVING(最简洁高效)

利用GROUP BY按时间分组,再通过HAVING筛选分组条件——COUNT(blocking_session_id)会自动忽略NULL值,只要结果大于0,就说明该分组存在非NULL记录:

SELECT collection_time
FROM your_table_name
GROUP BY collection_time
HAVING COUNT(blocking_session_id) > 0;

方法2:EXISTS子查询(适用于复杂关联场景)

通过子查询验证当前时间分组是否存在非NULL的blocking_session_id,再用DISTINCT去重:

SELECT DISTINCT collection_time
FROM your_table_name t1
WHERE EXISTS (
    SELECT 1
    FROM your_table_name t2
    WHERE t2.collection_time = t1.collection_time
      AND t2.blocking_session_id IS NOT NULL
);

方法3:IN子查询(逻辑直观)

先提取所有存在非NULL blocking_session_id的时间,再外层取这些时间的去重值:

SELECT DISTINCT collection_time
FROM your_table_name
WHERE collection_time IN (
    SELECT collection_time
    FROM your_table_name
    WHERE blocking_session_id IS NOT NULL
);

以上三种方法都能正确返回你示例中的2条目标数据,排除全为NULL的2022-12-01 20:25:12.847分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:05:21