ORACLE中如何从表中查出某个字段相同值最多的前三个

2025-04-10 14:36:43
推荐回答(4个)
回答(1):

oracle中sql不可以查询出某字段相同值最多的字段。涉及到业务逻辑筛选了。
1、查询某字段的值,对比如果相同保存起来
2、继续查询,如果有相同值则继续保存
3、对比集合中的数,如果相同最多,把id取出来查询即可。

回答(2):

思路步骤:

  1. 先统计该字段每个值出现的次数;

  2. 通过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

回答(3):

按照字段A进行分组,使用group by
统计的时候使用排名函数,比如rank()
获取rank()函数的值<=3就可以啦
自己尝试一下吧

回答(4):

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;