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

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

还是回到问题上吧:如何在数据库中查处最热的十个词,给你一张检索记录表,里面有一‘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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值