如何提取col1、col2、col3分组出现超1次的原始行且无需关联原表
可以通过窗口函数实现,无需将统计结果和原表做关联,参考查询语句如下:
SELECT col1, col2, col3, `key` FROM ( SELECT col1, col2, col3, `key`, COUNT(*) OVER (PARTITION BY col1, col2, col3) AS group_count FROM db.table ) AS temp_table WHERE group_count > 1
实现逻辑说明
- 内层查询使用
COUNT(*) OVER (PARTITION BY col1, col2, col3)窗口函数,对每一行计算它所属的col1、col2、col3分组的总出现次数,不会合并压缩原始行记录 - 外层查询直接筛选分组总次数大于1的行,就能得到所有符合条件的原始行
内容的提问来源于stack exchange,提问作者Shahin
相关产品推荐
相关产品推荐

