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

ClickHouse中筛选从未有status=1的非去重记录的SQL查询

解决ClickHouse筛选从未出现status=1的所有记录问题

问题核心

你需要的是所有属于从未有过status=1的物品的完整记录,而非单纯所有status=0的记录——后者会包含那些物品既有0又有1的情况里的0记录,这是你之前SQL出错的原因。

正确查询语句

方法1:子查询过滤物品名称

先筛选出从未出现status=1的物品名称,再关联原表获取这些物品的所有记录:

SELECT t.*
FROM your_table t
WHERE t.name IN (
    SELECT name
    FROM your_table
    GROUP BY name
    HAVING MAX(status) = 0
)

方法2:窗口函数(适合大数据量场景)

通过窗口函数计算每个物品的最大状态值,再筛选最大状态为0的记录:

SELECT name, status
FROM (
    SELECT 
        name, 
        status,
        MAX(status) OVER (PARTITION BY name) AS max_status
    FROM your_table
)
WHERE max_status = 0

示例验证

假设原表数据:

namestatus
A0
A1
B0
B0
C0

执行上述语句后,会返回B和C的所有记录:

namestatus
B0
B0
C0

不会包含A的status=0记录,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 19:06:28