如何基于LOT列的值查找SEQ列中的重复记录?
筛选同一LOT下存在重复SEQ值的记录
原始数据表格
| LOT | SEQ |
|---|---|
| LOT1 | 8 |
| LOT1 | 8 |
| LOT2 | 5 |
| LOT3 | 4 |
| LOT4 | 4 |
| LOT4 | 1 |
| LOT5 | 7 |
需求说明
需要筛选出同一LOT值下,SEQ列存在重复出现的记录,预期结果为LOT1,对应的重复SEQ值为8。
解决方案
方法1:分组统计筛选
使用GROUP BY结合HAVING子句直接筛选重复组合:
SELECT LOT, SEQ FROM your_table_name GROUP BY LOT, SEQ HAVING COUNT(*) > 1;
逻辑说明:
- 按
LOT和SEQ的组合分组,统计每组的记录数量 - 保留记录数大于1的分组,即同一LOT下重复出现的SEQ值
方法2:窗口函数筛选
如果需要更灵活的筛选逻辑,可使用窗口函数:
SELECT DISTINCT LOT, SEQ FROM ( SELECT LOT, SEQ, COUNT(*) OVER (PARTITION BY LOT, SEQ) AS seq_occurrence FROM your_table_name ) t WHERE seq_occurrence > 1;
逻辑说明:
- 子查询中通过窗口函数计算每个
LOT+SEQ组合的出现次数 - 外层筛选出次数大于1的记录,并用
DISTINCT去重得到唯一的重复组合
两种方法均可返回预期结果:仅LOT1和对应的8。
内容的提问来源于stack exchange,提问作者user22060295
相关产品推荐
相关产品推荐

