【题目】

“成交订单表”里记录了某房产平台(类似链家、贝壳等)每日房屋成交的明细。(贝壳面试题)

字段“成交客源渠道”中的值是“客源角色人”、“业主线上委托”、“”表示线下渠道,其余的成交客源渠道是线上。

1.当月截止昨天二手线上成交单量占比(含车位)>=50%的门店可获奖;

(线上成交占比=线上成交单量/总成交单量)

2.符合获奖条件的门店的第1单线上成交可获得200贝壳币(可以用于兑换奖金),第2单可获400贝壳币,第3单及以上可获800贝壳币,但车库不奖励(字段“房屋用途”中的值是”车位”、”车库”认为是车库);

3.在一个连续的SQL中实现以上需求,不能拆分成多个SQL,必须输出表格字段如下(可增加);

【解题思路】

房产平台贝壳的业务是什么?

贝壳业务的实质,是搭建了一个基于房地产服务的协作平台(ACN,agent cooperation network 经纪人协作网络)。房产经纪人、门店、品牌和其他服务提供者在这个平台上进行协同合作。

(图片来源贝壳IPO)

目前贝壳已成为国内最大的线上线下房产交易服务平台,覆盖了103所城市,连接265家地产经纪品牌,4.2万家门店,45.6万经纪人,2019年平台交易总额超2.12万亿,成交量超220万,手机APP月活达3900万。

(图片来源贝壳IPO)

对比原始数据表,可以发现本题要求输出表格中增加了3个字段,分别是:是否线上、经纪人所在门店的线上占比、该单应发的贝壳币。

1.线上成交占比

只有线上成交占比大于50%的门店订单才可以获得奖励,所以需要先得出每个门店的线上占比。

线上成交占比=线上成交单量/总成交单量

(1)哪些是线上成交的数据?

字段“成交客源渠道”中的值是“客源角色人”、“业主线上委托”、“”表示线下渠道,其余的成交客源渠道是线上。这种多条件判断的业务问题,要想到用《猴子 从零学会SQL》里讲过的case表达式。 利用case来对成交客源渠道字段赋值判断,如果为“线上”就返回1,不是就返回null(表示线下)。

select *,(case when 成交客源渠道 ="客源角色人"            or 成交客源渠道 ="业主线上委托"            or 成交客源渠道 =""       then null       else 1 end) as 是否线上from 成交订单表;

查询结果:

(2)每个门店的线上成交量

遇到“每个”这种业务问题,要想到用《猴子 从零学会SQL》里讲过的“分组汇总”。按门店分组(签约经纪人门店名称),然后统计线上成交数量(count)。

select *,count(case when 成交客源渠道 ="客源角色人"                 or  成交客源渠道 ="业主线上委托"                 or 成交客源渠道 =""            then null            else 1        end) as 是否线上from 成交订单表group by  签约经纪人门店名称;

(3)线上成交占比=线上成交单量/总成交单量

上面已经得到了每个门店的线上成交量。而总成交量可以用count(*)得到。

sql如下:

select *,count(case when 成交客源渠道 ="客源角色人"                    or  成交客源渠道 ="业主线上委托"                    or 成交客源渠道 =""           then null           else 1           end) / count(*)  as 经纪人所在门店的线上占比from 成交订单表group by  签约经纪人门店名称;

查询结果:

将上面的查询结果当作临时表b。

2.该单应发的贝壳币

符合获奖条件的门店的第1单线上成交可获得200贝壳币(可以用于兑换奖金),第2单可获400贝壳币,第3单及以上可获800贝壳币,但车库不奖励(字段“房屋用途”中的值是”车位”、”车库”认为是车库)

(1)哪些是符合条件的门店?

根据题目的业务说明:当月截止昨天二手线上成交单量占比(含车位)>=50%的门店可获奖。

各门店的线上单量占比已经在上面的临时表b中得出。

本月截止昨天用函数 month (签约时间)=month(now()) 得出。

字段“房屋用途”中的值是”车位”、”车库”认为是车库,用where 来筛选。

sql如下: ​​​​​​​

select a.*,b.经纪人所在门店的线上占比from 成交订单表 as aleft join b   ona.签约经纪人门店名称=b.签约经纪人门店名称whereb.经纪人所在门店的线上占比 >0.5 and month (a.签约时间)=month(now()) and  a.房屋用途 ="";

查询结果:

(2)订单如何排名?

题目的业务需求是:符合获奖条件的门店的第1单线上成交可获得200贝壳币(可以用于兑换奖金),第2单可获400贝壳币,第3单及以上可获800贝壳币。

这里的第1单第2单第3单,是按每个门店的签约时间对订单进行排名。涉及到排名问题,要想到《猴子 从零学会SQL》里讲过的“窗口函数。

用专用窗口函数(row_number)来排名,按签约时间排序(order by)

sql如下:​​​​​​​

select a.*,row_number() over (partition by a.签约经纪人门店名称                    order by a.签约时间 ) as 单量from 成交订单表 as aleft join bona.签约经纪人门店名称=b.签约经纪人门店名称whereb.经纪人所在门店的线上占比 >0.5 and month (a.签约时间)=month(now()) and  a.房屋用途 ="";

查询结果:

把上面的查询结果记为临时表c。

(3)根据单量得出对应的贝壳币

现在根据单量进行奖励,第1单线上成交可获得200贝壳币,第2单可获400贝壳币,第3单及以上可获800贝壳币,利用case when 来判断单量并进行赋值。

sql如下:​​​​​​​

select c.*,case when c.单量>= 3  then 800     when c.单量>= 2  then 400     else 200 end  as  该单应发的贝壳币   from (select *,row_number()      over  (partition by 签约经纪人门店名称             order by 签约时间 ) as 单量from 成交订单表) as c;

查询结果:

3.合并字段

得出 是否线上,经纪人所在门店的线上占比,该单应发的贝壳币 3个字段的代码之后,我们合并在一个连续的SQL中实现题目的业务需求。

合并的sql如下:​​​​​​​

select  c.*,       case when c.单量>= 3  then 800      when c.单量>= 2  then 400      else 200 end  as  该单应发的贝壳币 from(select a.*, b.经纪人所在门店的线上占比,        case when  成交客源渠道 ="客源角色人"                    or  成交客源渠道 ="业主线上委托"                    or 成交客源渠道 =""         then  null else 1  end as  是否线上,  row_number ()    over (partition by  a.签约经纪人门店名称        order by a.签约时间) as 单量from  成交订单表 as aleft join(select 签约经纪人门店名称,      count(case when  成交客源渠道 ="客源角色人"                    or  成交客源渠道 ="业主线上委托"                    or 成交客源渠道 =""         then  null else 1  end ) / count(*) as 经纪人所在门店的线上占比from成交订单表group by 签约经纪人门店名称) as b on a.签约经纪人门店名称 = b.签约经纪人门店名称whereb.经纪人所在门店的线上占比 > 0.5and month  (a.签约时间) = month(now())and a.房屋用途 = "") as c;

查询结果:

【本题考点】

1.用多维度拆解分析方法,将复杂的业务问题拆解为可以解决的简单问题。

2.遇到多条件判断的问题,要想到用case语句来实现。

3.排名问题,要想到用窗口函数来实现。

4.遇到只有一个表且只能用一条SQL语句完成,可以联想到用多表联结,来实现复杂的业务。

项目实战:房产行业如何分析?相关推荐

  1. spark项目实战:电商分析平台之各个范围Session步长、访问时长占比统计(需求一)

    spark项目实战:电商分析平台之各个范围Session步长.访问时长占比统计(需求一) 项目基本信息,架构,需要一览 各个范围Session步长.访问时长占比统计概述 各个范围Session步长.访 ...

  2. spark项目实战:电商分析平台之项目概述

    spark项目实战:电商分析平台之项目概述 目录 项目概述 程序架构分析 需求解析 初始代码和完成代码存放在github上面 1. 项目概述 在访问电商网站时,我们的一些访问行为会产生相应的埋点日志( ...

  3. Hadoop项目实战-用户行为分析之应用概述(二)

    1.概述 本课程的视频教程地址:<项目整体概述> 本节给大家分享的主题如下图所示: 下面我开始为大家分享第二节的内容--<项目整体概述>,下面开始今天的分享内容. 2.内容 从 ...

  4. iOS支付宝(Alipay)接入详细流程,比微信支付更简单,项目实战中的问题分析

    最近在项目中接入了微信支付和支付宝支付,总的来说没有那么坑,很多人都说文档不全什么的,确实没有面面 俱到,但是认真一步一步测试下还是妥妥的,再配合懂得后台,效率也是很高的,看了这篇文章,你也只要几分钟 ...

  5. Hadoop项目实战---黑马论坛日志分析

    1.项目描述 通过对黑马技术论坛的apache common日志进行分析, 计算论坛关键指标,供运营者决策. 2.数据情况 每行记录有5部分组成: 1.访问ip 2.访问时间 3.访问资源[跟着两个访 ...

  6. Hive项目实战:用Hive分析“余额宝”躺着赚大钱背后的逻辑

    一.项目背景 前两年,支付宝推出的"余额宝"赚尽无数人的眼球,同时也吸引的大量的小额资金进入."余额宝"把用户的散钱利息提高到了年化收益率4.0%左右,比起银行 ...

  7. 大数据项目实战-招聘网站职位分析

    目录 第一章:项目概述 1.1项目需求和目标 1.2预备知识 1.3项目架构设计及技术选取 1.4开发环境和开发工具 1.5项目开发流程 第二章:搭建大数据集群环境 2.1安装准备 2.2Hadoop ...

  8. 大数据——项目实战(使用Zeppelin分析电子商务消费行为分析)

    使用Zeppelin分析电子商务消费行为分析 任务描述 需求概述 问题分析 Customer表 Transaction表 Store表 Review表 数据结构 连接至Zeppelin 1.数据获取 ...

  9. 十五、《大数据项目实战之用户行为分析》HBase数据表操作

    ​​​​​​HBase 为用户提供了一个非常方便的命令行操作方式,我们称之为HBase Shell. HBase Shell 提供了大多数的 HBase 命令,通过 HBase Shell 用户可以方 ...

最新文章

  1. 进阶学习(1) Gradle 项目管理工具的使用
  2. PokeCats开发者日志(二)
  3. SAP Smartforms 条码打印
  4. 深度学习入门初步——MNIST数据格式如何使用
  5. php如何生成订单号,php如何生成不重复订单号
  6. C语言怎么确定用什么整形,【求助各位大虾!】 怎样用 if 语句验证一个整形数字。...
  7. 【渝粤教育】国家开放大学2018年秋季 0699-21T阅读与写作 参考试题
  8. 浅尝EffectiveCSharp_1
  9. android放在上个元素的左边代码,控件悬浮在某个控件之上 Android五大布局方式——相对布局(RelativeLayout)属性详解...
  10. 作者:周虎,就职于山东农业大学农业大数据研究中心。
  11. 29 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义分配
  12. python爬虫---(2)爬虫基本流程
  13. 解决“远程会话已断开连接,因为访问被拒绝导致许可证存储的创建失败,请使用提升的权限运行远程桌面客户端”问题
  14. ssh公钥的生成、查看以及config的配置
  15. GPS从入门到放弃(十六)、卫星时钟误差和卫星星历误差
  16. .net Core 3.1 项目打包部署到Windows服务
  17. X4扭曲字体或图形 coreldraw_CorelDRAWX4SP2简体中文正式版精简增强版
  18. 留学生 电脑安全与维护手册 (留学须知)
  19. centos 安装scp
  20. Rockchip Linux CMA开发文档

热门文章

  1. 运用百度地图api简单定位自己的位置
  2. VXLAN+EVPN控制平面和数据平面交互过程分析
  3. 一个不谋而合的管理现象--情绪化管理
  4. idea中.ignore的配置
  5. 评委对计算机知识竞赛的提问,主持人大赛评委提问参考题目
  6. Ghost win server2008 r2 x64标准版服务器专用V1测试版-蓝色动力网络出品
  7. Linux系统更换yum源的常用方法
  8. vue.js和vue.runtime.js
  9. 沈阳计算机考研学校排名,沈阳考研集训中心排名
  10. macs-fan-control 监视和控制Apple计算机上的风扇