首页 > 其他 > 详细

求数据表中一字段的相同前缀出现次数最大的前缀

时间:2014-03-11 04:05:25      阅读:667      评论:0      收藏:0      [点我收藏+]
一、首先说一下我的需求,在数据表T_CERTI_EXELAW中求certicode字段前三位出现次数最多的三位(期望结果是207),数据表如下:
              bubuko.com,布布扣
              期望结果是207
 
二、两种sql语句比较(oracle数据库)
方法一:常规嵌套(耗时:0.031seconds)
 SELECT NAME
   FROM (SELECT HEAD AS NAME, COUNT(HEAD) AS TIMES
           FROM (SELECT SUBSTR(M.CERTICODE, 0, 3) AS HEAD
                   FROM T_CERTI_EXELAW M
                  WHERE M.MAKEDEPART =
                        (SELECT MAKEDEPART
                           FROM T_CERTI_EXELAW
                          WHERE CERTICODE = ‘ccc20140310112954‘)) T
          GROUP BY HEAD)
  WHERE TIMES = (SELECT MAX(TIMES)
                   FROM (SELECT HEAD AS NAME, COUNT(HEAD) AS TIMES
                           FROM (SELECT SUBSTR(M.CERTICODE, 0, 3) AS HEAD
                                   FROM T_CERTI_EXELAW M
                                  WHERE M.MAKEDEPART =
                                        (SELECT MAKEDEPART
                                           FROM T_CERTI_EXELAW
                                          WHERE CERTICODE = ‘ccc20140310112954‘)) T
                          GROUP BY HEAD))
     方法二:     使用排序(耗时:0.016 seconds)                
     SELECT NAME FROM (SELECT HEAD AS NAME, COUNT(HEAD) AS TIMES
        FROM (SELECT SUBSTR(M.CERTICODE, 0, 3) AS HEAD
           FROM T_CERTI_EXELAW M
           WHERE M.MAKEDEPART =
                (SELECT MAKEDEPART
                   FROM T_CERTI_EXELAW
                  WHERE CERTICODE = ‘ccc20140310112954‘)) T
  GROUP BY HEAD ORDER BY times DESC ) WHERE ROWNUM=‘1‘
 
总结:我感觉以上方法还不是不够高效,有好方法请指教。

求数据表中一字段的相同前缀出现次数最大的前缀,布布扣,bubuko.com

求数据表中一字段的相同前缀出现次数最大的前缀

原文:http://www.cnblogs.com/hsuchan/p/3591725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!