首页 > 试题广场 >

某电商有100家店铺,每家店铺每天销售商品和销售额gmv的数

[填空题]
某电商有100家店铺,每家店铺每天销售商品和销售额gmv的数据存放在purchase表中,现需统计5月和6月,总gmv中,两个月分别的贡献前50% gmv的店铺名,请使用一句SQL1
有店铺销量表purchase:
  输出结果如下表:






1、先求出5,6月每家店铺总的gmv -->totalgmv
同时按照月份和店铺进行分组:group by month(dt) seller_name
使用where进行筛选: where month in ('5','6')
作为临时表c
select month(dt) as month, seller_name, sum(gmv) as totalgmv 
from purchase 
where month(dt) in ('5' ,'6')  
group by month(dt),seller_name
2.从临时表c中筛选贡献前50%的店铺,此时还是要注意加上筛选条件
即按照月份和店铺进行分组:group by month(dt) seller_name
这些符合条件的数据作为临时表b
select month, seller_name, percentile(totalgmv, 0.5)as mid
from c group by month(dt) seller_name
3.再求出5,6月每家店铺总的gmv与符合条件的临时表b内联,*表示要求查询的内容
select * select month(dt) as month, seller_name, sum(gmv) as totalgmv 
from purchase 
where month(dt) in ('5' ,'6')  
group by month(dt),seller_name) a join  b  a.month = b.month and a.seller_name = b.seller_name 
where totalgmv > mid
总觉得输出不用concat呢,就是直接dt不就行,最后呈现的结果也不是2019-09呀?



发表于 2020-09-02 15:38:41 回复(0)
select convert(varchar(7),dt,120),seller_name--查询字段
from 
(select month(dt)as month ,seller_name,sum(gmv) as totalgmv from purchase where month(dt) in('5','6') group by month(dt),seller_name) a --建立表a筛选每个店铺5、6月份的销售总额
join--做表链接加入中位数的条件列
(select month, seller_name, percentile(totalgmv, 0.5) as mid 
from (select month(dt) as month ,seller_name,sum(gmv) as totalgmv from purchase where month(dt) in('5','6')group by month(dt),seller_name) c --建立表c提高查询效率,计算5、6月的销售总额的中位数
group by month,seller_name) b--链接a、b表
on a.month=b.month and a.seller_name = b.seller_name --链接条件
where totalgmv > mid--过滤条件贡献率大于50%

发表于 2021-02-22 14:26:37 回复(0)
这种题目怎么判定对错呢
编辑于 2024-01-11 19:54:44 回复(0)