如何查询符合特定条件的行:仅返回sync&cb分组下所有value为not available的记录
按sync、cb字段分组筛选全组符合条件记录的实现方案
核心逻辑:仅保留分组内不存在任何value不等于not available的分组,以下是不同场景的实现代码:
SQL场景
仅返回符合条件的分组键(sync、cb值)
用GROUP BY + HAVING实现:
SELECT sync, cb FROM your_table_name GROUP BY sync, cb -- 统计分组内不符合要求的行数,为0则代表全组符合条件 HAVING COUNT(CASE WHEN value != 'not available' THEN 1 END) = 0;
返回符合条件分组的所有原始行
用窗口函数实现:
SELECT sync, cb, value FROM ( SELECT *, -- 按sync、cb分区统计不符合要求的行数 SUM(CASE WHEN value != 'not available' THEN 1 ELSE 0 END) OVER (PARTITION BY sync, cb) AS invalid_count FROM your_table_name ) t WHERE invalid_count = 0;
用示例数据测试以上代码,返回结果仅包含sync=Bal、cb=BAL1的相关记录,符合需求。
Python Pandas场景
用groupby.filter实现:
import pandas as pd # df为你的原始数据框 result = df.groupby(['sync', 'cb']).filter(lambda g: (g['value'] == 'not available').all())
内容的提问来源于stack exchange,提问作者beckham
相关产品推荐
相关产品推荐

