Oracle SQL按TRAN分组后取计数最高的对应TRAN值实现方法
Oracle SQL 实现代码
你可以直接用GROUP BY + HAVING的分组过滤逻辑实现需求,语句如下:
SELECT TRAN FROM CROSS_REF GROUP BY TRAN HAVING COUNT(*) > 1;
逻辑说明
- 首先通过
GROUP BY TRAN按照TRAN字段对表数据做分组,相同TRAN值的行会被聚合到同一个分组中 COUNT(*)统计每个分组的行数,HAVING子句对聚合后的分组做过滤,只保留行数大于1的分组,刚好匹配你需要的计数为2的TRAN=10的记录- 最终返回符合条件的TRAN字段值即可
如果后续需要同时返回对应分组的其他关联字段,可以改用窗口函数实现:
SELECT DISTINCT TRAN FROM ( SELECT TRAN, COUNT(*) OVER(PARTITION BY TRAN) AS cnt FROM CROSS_REF ) t WHERE cnt > 1;
内容的提问来源于stack exchange,提问作者Imran Hemani
相关产品推荐
相关产品推荐

