oracle中sql不可以查询出某字段相同值最多的字段。涉及到业务逻辑筛选了。
1、查询某字段的值,对比如果相同保存起来
2、继续查询,如果有相同值则继续保存
3、对比集合中的数,如果相同最多,把id取出来查询即可。
思路步骤:
先统计该字段每个值出现的次数;
通过ROWNUM或者RANK函数获取出现次数最多的3个值;
SQL:
SELECT COL,T_COUNT
FROM (SELECT COL, COUNT(1) AS T_COUNT
FROM TABLE1
GROUP BY COL
ORDER BY T_COUNT DESC)
WHERE ROWNUM <= 3
按照字段A进行分组,使用group by
统计的时候使用排名函数,比如rank()
获取rank()函数的值<=3就可以啦
自己尝试一下吧
select ch.a from ( select rownum r ,COUNT(t.A),t.A a ct from TABLE t group by t.A order by ct desc) ch where ch.r<3;