SQL计算每个城市的店铺数量及各个城市的生意汇总,输出包含无购买记录的城市(汇总)

【面试题】某公司数据库里有3张表,销售订单表、产品明细表、销售网点表

”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价

 

销售订单表、产品明细表、销售网点表字段之间的关系如下

销售订单表和产品明细表通过“产品”字段关联,销售订单表和销售网点通过“交易网点”关联

【问题】计算每个城市的店铺数量及各个城市的生意汇总,输出包含无购买记录的城市

【解题思路】

1.多表联结

此题需要第一个表“销售订单表”和第三个表“销售网点表”的联结。

因为要输出“无购买记录”的城市,说明“销售网点”表的范围比较大。所以,以“销售网点”表为主表,两个表联结的字段是“交易网点”,多表联结SQL如下:


select *
from 销售网点表 as c 
left join 销售订单表 as a
on c.交易网点=a.交易网点;

2.每个城市的店铺数量

遇到“每个”要想到《猴子从零学会SQL》里讲过的汇总分析

这里按“城市”分组(group by),然后汇总(交易网点数量count)

3.每个城市的生意汇总

每个城市的生意汇总也就是分析出每个城市的销售额,销售额=销售数量*零售价。可以按“城市”分组(group by),然后汇总(对销售额进行求和sum)

最终SQL如下:


select c.城市
    ,count(c.交易网点) as 交易网点总数量
    ,sum(a.销售数量*a.零售价) as 城市生意汇总 
from 销售网点表 as c 
left join 销售订单表 as a
on c.交易网点=a.交易网点
group by c.城市;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值