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

比如说一张表中,某个字段A有10个为B,8个为C,7个为D,5个为E,那么导出出现次数最多的前三个为:BCD。求教方法,谢谢... 比如说一张表中,某个字段A有10个为B,8个为C,7个为D,5个为E,那么导出出现次数最多的前三个为:BCD。求教方法,谢谢 展开
 我来答
育知同创教育
2016-02-13 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
oracle中sql不可以查询出某字段相同值最多的字段。涉及到业务逻辑筛选了。
1、查询某字段的值,对比如果相同保存起来
2、继续查询,如果有相同值则继续保存
3、对比集合中的数,如果相同最多,把id取出来查询即可。
帐号已注销
2015-11-04 · TA获得超过315个赞
知道小有建树答主
回答量:225
采纳率:0%
帮助的人:247万
展开全部

思路步骤:

  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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Axure夜话
2015-03-26 · 知道合伙人软件行家
Axure夜话
知道合伙人软件行家
采纳数:1197 获赞数:1344
1992年毕业于太原理工大学,20年IT公司工作经验现任山西誉海和科技有限公司技术总监,老二牛车教育课程总监

向TA提问 私信TA
展开全部
按照字段A进行分组,使用group by
统计的时候使用排名函数,比如rank()
获取rank()函数的值<=3就可以啦
自己尝试一下吧
追问
可是你这样获取的是最大值的前三个吧?  我需要的是出现次数最多的前三个。
select * from (select * from audit_ErrFailCDRs_monitor order by to_number(RESULTCODE) desc) where rownum <=3
这样得出的是最大的前三个,而我现在想得到RESULTCODE这个字段的值出现最多的前三个
追答
使用排名函数的条件就是按照次数统计的。所以最大值的前三个就 是出现次数最多的前三
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞鱼678
2015-03-26 · TA获得超过1052个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:523万
展开全部
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;
更多追问追答
追问
好像看不懂耶。
select * from (select * from audit_ErrFailCDRs_monitor order by to_number(RESULTCODE) desc) where rownum <=3; 这个就是我要查询的表,但是我这样只能得到最大值的前三个,而现在想得到的是RESULTCODE这个字段的值出现最多的前三个,求帮助
追答
SELECT
ch.a
FROM
(
SELECT
rownum r,
COUNT(t.RESULTCODE) ct,
t.RESULTCODE a
FROM
audit_ErrFailCDRs_monitor t
GROUP BY
t.RESULTCODE
ORDER BY
ct DESC
) ch
WHERE
ch.r <= 3;
内层语句中用RESULTCODE进行分组,拿到个数COUNT(t.RESULTCODE) ct,并且按个数倒序排序。同时加上rownum r字段得到子表ch。
外层查询拿到前三个,就是出现次数前三的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式