如何从数据库中选出最热的十个检索词

来源:互联网 发布:淘宝网地板棉拖鞋 编辑:程序博客网 时间:2024/05/18 03:55

这个是我今天面试碰到的一个面试题,不得不说面试官真的是别有用心,可惜当时我是把数据库忘的一干二净,回答的离他想要的想去甚远。

还是回到问题上吧:如何在数据库中查处最热的十个词,给你一张检索记录表,里面有一‘query’列,其它的暂时记不起来了,但是这个问题就只需要关注这一列就好:

这里我随意创建了一张数据表(仅做模拟),表结构如图所示:

shoes表结构

然后我在里面随便插入了几组数据,统计结果如下图所示:

插入数据表数据

那么上面问检索最热的几个词其实这里面就类似于查询foot_id中相同数字出现的次数按照大小排序最重按照降序排列,取出前十个前十个词。

解决步骤:

  • 首先需要对`query`列进行group by操作,将相同检索词放到一组:
    select *, count(*) from shoes group by foot_id;

            查询结果

  • 然后需要对count(*)列进行排序,此时如果直接在count(*)后加desc是错误的:
    select *, count(*) desc from shoes group by foot_id;

  • 对count(*)进行排序需要使用order by命令:
     select *, count(*) from shoes group by foot_id order by count(*);

  • 如果到了上面那一步还差一点点,但是这会儿也差不多可以了,因为就差一个desc了,但是别忘了还有一个前十位呢,这里就前三位吧:
     select *, count(*) from shoes group by foot_id order by count(*) desc limit 3;

嗯,是的,这个应该就是问题的解了!





0 0