【题目】
用户访问次数表,列名包括用户编号、用户类型、访问量。要求在剔除访问次数前 20% 的用户后,每类用户的平均访问次数。(拼多多、网易面试题)


【解题思路】
使用逻辑树分析方法可以把这个复杂的问题拆解为 3 个子问题:
1)找出访问次数前 20% 的用户
2)剔除访问次数前 20% 的用户
3)每类用户的平均访问次数

下面分别来解决每个子问题

  1. 访问次数前 20% 的用户
    先按 “访问次数” 排名,然后就可以找到”前 20%”的数据。排名问题可以用窗口函数来解决。
    首先对所有用户的访问量按从低到高的顺序用窗口函数排名:
select * , row_number() over (order by 访问量 desc) as 排名
from 用户访问次数表
select * from (select * , row_number() over (order by 访问量 desc) as 排名
from 用户访问次数表) as a
where 排名<=(select max(排名) from a)* 0.2
  1. 剔除访问次数前 20% 的用户
    题目要求是 “剔除访问次数前 20% 的用户”,也就是把上面 sql 语句里的 where 条件中的 <= 变成 > 就获取到相反的数据了。
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
(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 004 拼多多面试题:如何查找前 20% 的数据?相关推荐

  1. sql查询百分之20到百分之40的数据_拼多多面试题:如何查找前20%的数据?

    [题目] 用户访问次数表,列名包括用户编号.用户类型.访问量.要求在剔除访问次数前20%的用户后,每类用户的平均访问次数.(拼多多.网易面试题) [解题思路] 使用逻辑树分析方法可以把这个复杂的问题拆 ...

  2. 拼多多笔试题 回合制游戏

    拼多多笔试题 回合制游戏 题目描述 解法1(深度优先搜索) 解法2(数学规律) 昨晚心血来潮,拿了一份校招真题练练手,无奈这道题一直没有AC,只有75%的通过率,用了深度优先搜索+记忆化搜索最终还是会 ...

  3. 怎么查看拼多多店铺销量?怎么查看店铺后台数据图?

    我相信商家明白,店铺运营的许多方面都是相互关联的.店铺排名越高,销量就越好,其他数据就会得到改善,从而促进销量的增长,从而建立一个良性循环.简单来讲,经营拼多多店并没那么容易.除了大量的精力.时间和金 ...

  4. 转化率统计 php,拼多多转化率怎么计算?如何进行分析数据

    原文大纲:拼多多转化率怎么计算?如何进行分析数据 现如今提起我们在网上运营店铺的时候,也要时刻查看和分析店铺的数据.比如点击率是增加了还是减少了,转化率是提高了还是降低了.那么,拼多多转化率怎么计算? ...

  5. 校招拼多多笔试题(前端工程师)

    考试时间:2017-09-02-提前批内推-笔试 1) 测试代码如下: var a = {}; b = { key: 'b' }; c = { key: 'c' }; a[b] = 123; a[c] ...

  6. c++软件开发面试旋极面试题_c++开发程序员面试拼多多面试题整理(含答案)

    题很多,先上题后上答案,便于大家思考. 一.拼多多服务端实习岗位面试 1. 一个C++源文件从文本到可执行文件经历的过程 2.#include 的顺序以及尖叫括号和双引号的区别 3.进程和线程,为什么 ...

  7. echarts空数据如何设置_拼多多分时折扣如何设置优化?分时数据怎么看?

    一.什么时候优化分时折扣 1.优化好关键词.智能词包.人群定向时,再优化分时折扣. 2.还有一种情况是智能词包前期为了拿流量出价比较高,导致关键词出价也高,最后导致流量过大,这时可以先统一设置下分时折 ...

  8. 拼多多销售数据分析主要包含哪些方面的数据?

    大家好,我是面兜兜,今天面兜兜给大家有关销售数据分析的相关细节问题.不用多说,相信很多从事拼多多的商家应该都知道,对于拼多多店铺来说数据分析是非常重要的,所以现在大部分的拼多多店铺都会分析拼多多数据, ...

  9. 拼多多店铺数据分析有什么作用?哪些数据是有用的?

    大家好,我是面兜兜,今天面兜兜给大家有关店铺数据分析的相关问题.现在入驻拼多多的商家是越来越多,由于拼多多入驻门槛低,用户基数大,所以非常受欢迎,但入驻容易,想要运作好店铺并非一键容易的事情,首先最关 ...

最新文章

  1. PostgreSQL参数优化对比性能测试
  2. 机器学习算法_机器学习算法中分类知识总结!
  3. java待办功能 设计_高效人士的待办清单都用这些软件来做
  4. Android之获取设备的型号和手机厂商
  5. java实验3_Java 实验3
  6. MySQL表结构设计之范式化和反范式化对比
  7. Vue 组件 mixins
  8. WCF发布到IIS的配置步骤
  9. 【Spark】大数据+AI mettup【视频笔记】从lambda到HSAP实时数仓的演进 机器学习易用性
  10. FPGA学习笔记---3种乘法器的比较
  11. java.lang.IllegalStateException: UT010019: Response already commited
  12. 第一部分 OpenStack及其构成简介
  13. 四、kafka整体架构
  14. 《Excel大神上分攻略》学习笔记3——函数求和及常见函数
  15. 打工人颤抖!蓝色光标宣布:全面用 AI 代替外包,股价一度飙涨 18%!
  16. 2022-2028年全球与中国皮卡后视镜行业市场前瞻与投资战略规划分析
  17. 2021年十佳优惠券返利APP排名榜 2021年用户喜欢的优惠券返利APP前10排行榜
  18. linux GRO相关
  19. caffe-ristretto:可以定点的层目录
  20. STM32CubeMX——LED定时闪烁和输出PWM波

热门文章

  1. 宝付开展宣传活动建立法律意识
  2. 力扣123.买卖股票的最佳时机Ⅲ买卖股票的最佳时机Ⅳ
  3. puzzle(0916)智行营救、勇往直前
  4. SQLServer优化-实践经验
  5. Nginx 502 Bad Gateway
  6. 502 Bad Gateway 常见解决思路
  7. matlab语句运算相关论文,matlab教程论文.doc
  8. Python描述 LeetCode 剑指 Offer 30. 包含min函数的栈
  9. 计算机网络(第8版 谢希仁)
  10. 嵌入式linux和dsp,嵌入式uClinux和双核DSP在视频编码系统中的应用研究