Impala SQL使用GROUP_CONCAT筛选c_num计数≥2的i_id方案咨询
解决方案
你原有查询缺少两个核心逻辑:按i_id分组的GROUP BY子句,以及分组后过滤符合条件分组的HAVING子句,修正后的查询语句如下:
SELECT i_id, group_concat(DISTINCT cast(c_num AS STRING)) AS c_num, group_concat(DISTINCT cast(type AS STRING)) AS type FROM A1 GROUP BY i_id HAVING COUNT(*) >= 2;
逻辑说明
GROUP BY i_id会将全表数据按i_id值拆分成分组,每个唯一i_id对应独立分组group_concat默认用逗号作为分隔符拼接同组内的字段值,加DISTINCT可以去除重复拼接值,若业务允许重复值可直接去掉该关键字HAVING是专门用于分组后的过滤条件,COUNT(*) >=2即只保留组内数据行数≥2的分组,可直接过滤掉仅1行数据的i_id=3、i_id=4分组。
如果你的业务判断规则是去重后的c_num数量≥2,可将HAVING条件调整为COUNT(DISTINCT c_num) >=2即可。
内容的提问来源于stack exchange,提问作者LwShieN
相关产品推荐
相关产品推荐

