前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何找到优质房源?

如何找到优质房源?

原创
作者头像
猴子数据分析
修改2021-08-21 10:27:56
8040
修改2021-08-21 10:27:56
举报
文章被收录于专栏:猴子数据分析猴子数据分析

【面试题】

评分表里记录了各个城市房源的评分,包括房源号、城市、分数。

为了帮助用户根据评分找到优质房源,现在领导要你找出分数(满分10分)在0-5分,5-7分,7-9分,9分及以上分别有多少。

【解题思路】

1.拆解问题

使用逻辑树分析方法来拆解问题:求分数在0-5分,5-7分,7-9分,9分及以上分别有多少

1)将评分表按照分数进行分组,按照0-5分,5-7分,7-9分,9分四个区间进行分组

2)再对每个区间的房源进行计数

2.如何按条件拆分成多个组呢?

根据分数所在的区间进行分组,以下是一个简单的示意图

这里会有两个常见的误区:

1)分组就想到用group by,但是在这里是不行的。

因为平时使用groupby分组的字段是我们直接用的字段,而这里的分数并不是我们最终分组的区间字段0-5、5-7这样。

如果直接用分组(group by),就会把相同的分数分为一组,与我们要求的分数段是不相符的。

2)看到条件就想到用where,但是在这里是多条件的情况。如果我们使用where分数<5 那么分数大于5的房源就无法统计到

3.如何实现多条件判断呢?

涉及到“多条件判断”的问题,要想到《猴子从零学会SQL》里讲过的条件判断语句case when,完整的用法如下:

翻译过来就是 当字段1 >值1,取新值1 ;当字段1 <值1,取新值2;当字段1 =值1,取新值3

方法一:

使用四个case when就把原表分成了4个部分,省略了else,当符合条件就取房源号放入对应的字段中

在上面代码的基础上再加上计数函数 count即可,完整SQL如下:

查询结果:

方法二:

当然有同学会问,为什么不像示例一样用1个case when,而用4个case when呢?

如果用一个case when是这样的:

这样取出来的是一个字段,我们就没法区分各个组的个数。

当然如果要使用这种方法的话我们可以在then后面做点文章,直接将分数转化为分数区间。

这样就相当于把分数用分数段来进行表示,实际结果如下图

 针对这个查询结果在外层加一个查询根据区间group by即可。

查询结果:

【本题考点】

多条件判断分组类型的问题,要想到用多条件判断case解决

【举一反三】

下图是学生考试的成绩表,求各科不及格(<60)、及格(60-80)、优秀(80+)的人数

参考答案

查询结果:

推荐:如何从零学会SQL?

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档