SQL如何分析房子?(分组、汇总、having)

【面试题】

“房源表”是各个城市每天新增房源的名单,包括房源号、城市、录入时间。现在需要分析出每天每个城市有多少新增房源?

【解题思路】

1.如何拆解问题?

我们使用多维度拆解分析方法,来拆解一下问题:每天每个城市有多少新增房源

1)要求的维度:每天、每个城市

2)要求的数值:新增房源个数

所以这里是一个典型的分组汇总问题。将数据按照每天、每个城市的维度分组(group by),分组后对房源的个数进行汇总(count求房源号这一列有多少行)

2.如何分组?

按“每天”分组后如下图:

 

 这样就完成了从时间和城市两个维度的分组拆解,分组在SQL中用group by


select a.录入时间,a.城市
from 房源表
group by 录入时间,城市;

3.如何汇总?

现在组已经分好了,我们只需要看每个分组中的房源号个数计数,就完成了分组计数。

计数在SQL中用count(计数字段)来表示,这里的count就是一种聚合函数,与分组函数group by常常搭配使用。


select a.录入时间,a.城市,
       count(a.房源号) as 个数
from 房源表 as a
group by 录入时间,a.城市;

【本题考点】

1.当遇到“每个”问题,要想到《猴子 从零学会SQL》里讲过的用“汇总分析”解决

2.考查对聚合函数的了解,count的实际用法,常见的汇总函数如下

【举一反三】

房源表如下,找出每天每个城市的新增房源数大于1的城市、日期和新增房源数

参考答案:分组后对数据筛选用having子句


select a.录入时间,a.城市,
       count(distinct a.房源号) as 个数
from 房源表 as a
group by 录入时间,a.城市
having count(distinct a.房源号)>1;

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值