Presto SQL:如何查找同一PK下Item1不同但Item2相同的记录
Presto SQL 筛选符合条件的记录方案
针对同一PK下存在多条记录,且Item1取值不同但Item2取值相同的筛选需求,自连接方式容易遗漏3条及以上符合条件的场景,以下两种方法可以解决这个问题:
方法一:分组聚合关联法
先按PK和Item2分组,统计每组内不同Item1的数量,筛选出数量≥2的分组,再关联原表获取完整记录:
WITH grouped_data AS ( SELECT PK, Item2, COUNT(DISTINCT Item1) AS distinct_item1_count FROM your_table -- 替换为你的表名 GROUP BY PK, Item2 HAVING COUNT(DISTINCT Item1) >= 2 ) SELECT t.* FROM your_table t JOIN grouped_data gd ON t.PK = gd.PK AND t.Item2 = gd.Item2;
方法二:窗口函数筛选法
使用窗口函数直接在原表中计算每个PK+Item2分组下不同Item1的数量,再筛选符合条件的记录:
SELECT * FROM ( SELECT *, COUNT(DISTINCT Item1) OVER (PARTITION BY PK, Item2) AS distinct_item1_count FROM your_table -- 替换为你的表名 ) sub_query WHERE distinct_item1_count >= 2;
这两种方法都会把同一PK下,只要存在至少两个不同Item1但Item2相同的所有相关记录全部筛选出来,不管是2条还是3条及以上的情况,避免了自连接的局限性。
内容的提问来源于stack exchange,提问作者Imase Itachi
相关产品推荐
相关产品推荐

