拼多多面试题:如何查找前20%的数据?
【题目】
用户访问次数表,列名包括用户编号、用户类型、访问量。要求在剔除访问次数前20%的用户后,每类用户的平均访问次数。(拼多多、网易面试题)
【解题思路】
使用逻辑树分析方法可以把这个复杂的问题拆解为3个子问题:
1)找出访问次数前20%的用户
2)剔除访问次数前20%的用户
3)每类用户的平均访问次数
下面分别来解决每个子问题
1.访问次数前20%的用户
先按“访问次数”排名,然后就可以找到”前20%”的数据。排名问题在《猴子 从零学会sql》里讲过可以用窗口函数来解决。
首先对所有用户的访问量按从低到高的顺序用窗口函数排名:
select *,row_number() over(order by 访问量 desc) as 排名
from 用户访问次数表;
排名后,如何找出前20%的数据呢?
排名<=最大的排名值 * 20%,就是前20%的数据。
把前面的排名结果表当作临时表a,加上筛选条件(where)对应的sql语句如下:
select *
from a
where 排名<= 最大的排名 * 0.2;
最大的排名值如何得到呢?可以用下面的sql语句:
select max(排名)
from a;
把前面的sql语句组合到一起就得到了筛选出排名前20%的数据了:
select *
from a
where 排名<= (select max(排名) from a) * 0.2;
2.剔除访问次数前20%的用户
题目要求是“剔除访问次数前20%的用户”,也就是把上面sql语句里的where条件中的 <= 变成 >就获取到相反的数据了。
select *
from a
where 排名 > (select max(排名) from a) * 0.2;
把前面得到的临时表a的sql语句带入后就是:
select *
from
(select *,row_number() over(order by 访问量 desc) as 排名
from 用户访问次数表) as a
where 排名 > (select max(排名) from a) * 0.2;
3.每类用户的平均访问次数
当“每个”出现的时候,就要想到《猴子 从零学会sql》里讲过的这时候就是要分组汇总了。
按“用户类型”分组(group by),然后汇总求平均访问次数avg(访问次数)。
select 用户类型,avg(访问量)
from b
group by 用户类型;
这里的表b就是前面第2步得到的临时表,带入sql里就是:
select 用户类型,avg(访问量)
from
(select *
from
(select *,row_number() over(order by 访问量 desc) as 排名
from 用户访问次数表) as a
where 排名 > (select max(排名) from a) * 0.2) as b
group by 用户类型;
【本题考点】
1.面对复杂问题的分析能力
要会使用逻辑树分析方法将复杂问题拆解成简单问题排名问题使用窗口函数来实现。
2. 当有“每个”出现的时候,要想到用分组汇总,下图是常用的汇总函数
3.选出前百分之N的问题如何解决?下面是这类问题的解决模版
1)先使用窗口函数对数据排名得到临时表a
select *,row_number() over(order by 排名的列 desc) as 排名
from 表名;
2)然后用表a筛选出前百分之N的数据
select *
from a
where 排名 <= (select max(排名) from a) * 百分之N;
3)如果是剔除前前百分之N的数据,也就是选出后(1-百分之N)的数据。例如选出后80%的数据,就把上面的where子句里的 <= 修改成 >
select *
from a
where 排名 > (select max(排名) from a) * 百分之N;
推荐:如何从零学会sql?
拼多多面试题:如何查找前20%的数据?相关推荐
- sql查询百分之20到百分之40的数据_拼多多面试题:如何查找前20%的数据?
[题目] 用户访问次数表,列名包括用户编号.用户类型.访问量.要求在剔除访问次数前20%的用户后,每类用户的平均访问次数.(拼多多.网易面试题) [解题思路] 使用逻辑树分析方法可以把这个复杂的问题拆 ...
- 图解SQL 004 拼多多面试题:如何查找前 20% 的数据?
[题目] 用户访问次数表,列名包括用户编号.用户类型.访问量.要求在剔除访问次数前 20% 的用户后,每类用户的平均访问次数.(拼多多.网易面试题) [解题思路] 使用逻辑树分析方法可以把这个复杂的问 ...
- 拼多多笔试题 回合制游戏
拼多多笔试题 回合制游戏 题目描述 解法1(深度优先搜索) 解法2(数学规律) 昨晚心血来潮,拿了一份校招真题练练手,无奈这道题一直没有AC,只有75%的通过率,用了深度优先搜索+记忆化搜索最终还是会 ...
- python爬取微博热搜显示到折线图_微博热搜榜前20信息数据爬取进行数据分析与可视化...
一.设计方案 1.主题式网络爬虫名称:微博热搜榜前20信息数据爬取进行数据分析与可视化 2.爬取内容与数据特征分析:爬取微博热搜榜前20热搜事件.排名与热度,数据呈一定规律排序. 3.设计方案概述:思 ...
- 怎么查看拼多多店铺销量?怎么查看店铺后台数据图?
我相信商家明白,店铺运营的许多方面都是相互关联的.店铺排名越高,销量就越好,其他数据就会得到改善,从而促进销量的增长,从而建立一个良性循环.简单来讲,经营拼多多店并没那么容易.除了大量的精力.时间和金 ...
- 转化率统计 php,拼多多转化率怎么计算?如何进行分析数据
原文大纲:拼多多转化率怎么计算?如何进行分析数据 现如今提起我们在网上运营店铺的时候,也要时刻查看和分析店铺的数据.比如点击率是增加了还是减少了,转化率是提高了还是降低了.那么,拼多多转化率怎么计算? ...
- c++软件开发面试旋极面试题_c++开发程序员面试拼多多面试题整理(含答案)
题很多,先上题后上答案,便于大家思考. 一.拼多多服务端实习岗位面试 1. 一个C++源文件从文本到可执行文件经历的过程 2.#include 的顺序以及尖叫括号和双引号的区别 3.进程和线程,为什么 ...
- 校招拼多多笔试题(前端工程师)
考试时间:2017-09-02-提前批内推-笔试 1) 测试代码如下: var a = {}; b = { key: 'b' }; c = { key: 'c' }; a[b] = 123; a[c] ...
- 弘辽科技:拼多多宝贝如何排名靠前?如何上类目排名?
拼多多店铺上面的宝贝也需要用心经营,争取可以获得更好的排名,但是对拼多多卖家来说,自然也希望能够让宝贝排名靠前,但是到底应该怎么做才行呢? 1.拼多多商品质量及价格,都知道商品的质量是拼多多开店的基础 ...
- 店盈通:拼多多宝贝排名怎么靠前,方法介绍
很多商家之所以选择开网店,一般是因为它的运营成本比较低,会节省一些开店成本.但是,想要运营好一个网店,需要推广和引流.那么拼多多如何提高权重和排名呢?有哪些技巧?让我们来看看. 1.标题关键词 关键词 ...
最新文章
- 手机zip模拟器_车祸现场模拟器简体中文免安装版 6.4G
- http协议、cookie及session
- HDU4416(后缀自动机)
- Java微信二次开发(九)
- 一台比亚迪秦EV充电时自燃 相关人员:无人员伤亡、起火未爆炸
- onkeydown为什么会无限回调_为什么投资者总喜欢在股票下跌时买入?只有傻瓜才能在股市里挣钱...
- C++直接修改std::set元素的方法
- 计算机社团技术部部长述职报告,社团部长个人工作总结(精选6篇)
- 终于搞懂了Java 8 的内存结构,再也不纠结方法区和常量池了!!
- 双主动桥隔离双向DC-DC变换器(五)硬件设计和优化
- NTFS格式与FAT32格式区别
- 惠普硬盘测试工具_不掉速的黑科技,HP固态硬盘测试与拆解
- 视频接口:DP接口和HDMI接口介绍,看完你就懂了
- steam社区打不开,解决mac无法打开steam社区的方法
- opencv 应用程序无法正常启动0xc000007b
- wxpy 建群 err_code: 1 err_msg:
- mysql 正击剑_学正小学击剑课程彰显“亮剑”精神
- 高薪资的优秀平面设计师是怎样的
- 解决:Win11蓝牙鼠标经常断连问题(亲测有效)
- 周海汉:Alexa 深入研究
热门文章
- Spring data jpa Specification 子查询实现
- 【JAVA】图书管理系统(简单初阶版)
- SCRM红包功能及公众号支付配置操作教程
- 使用Jpom自动构建springboot项目
- “英”雄岂能无用武之地?
- 中国去甲斑蝥素行业市场供需与战略研究报告
- python高手养成百家号_离骚是词吗 使用Python分析屈原《离骚》中高频词并生成词......
- GCMS测试中常见问题
- 普通用户ping icmp open socket的问题
- Docker1.12新特性之集群