表
问题
问题1、统计每款的SPU(货号)数量,并按SPU数量降序排序;
问题2、统计实际总销售额与客单价(结果保留两位小数);
问题3、统计折扣率(GMV/吊牌金额,GMV指的是成交金额。折扣率保留两位小数);
问题4、统计每款的动销率(pin_rate,有销售的SKU数量/在售SKU数量)与售罄率(sell-through_rate,GMV/备货值,备货值=吊牌价*库存数),按style_id升序排序;
问题5连续2天及以上在该店铺购物的用户及其对应的次数(若有多个用户,按user_id升序排序)。
题解
问题1
电商SPU是指商品信息聚合的最小单位,属性值、特性相同的商品就可以称为一个SPU。
步骤 | 来源 |
---|---|
SELECT | 款号,count(库存量) SPU |
FROM | 产品情况表 |
GROUP BY | 款号 |
ORDER BY | SPU |
问题2
客单价是人均付费,等于总收入/总用户数。
步骤 | 来源 |
---|---|
SELECT | sum(结算金额),round(sum(结算金额)/count(distinct 用户id,2)) |
FROM | 销售数据表 |
步骤 | 来源 |
---|---|
SELECT | sum(结算金额)/sum(标签价格*销售数量)[结合round函数] |
FROM | 销售数据表,产品情况表 using (货号) |
问题4
销售表同个货号有多笔记录,需要先对销售表汇总再sum。
步骤 | 来源 |
---|---|
SELECT | 款号, |
sum(cnt)/(sum(库存)-sum(cnt)), | |
sum(amount)/sum(标签价格)*sum(库存) | |
FROM | (select 货号,sum(销售数量)cnt,sum(结算金额)amount from 产品情况表 group by 货号) |
产品情况表 | |
GROUP BY | 款号 |
ORDER BY | 款号 |
问题5
r_k:row_number() over(partition by 用户id order by 销售日期) 。
连续:日期减去按照用户分组、日期排序的次序数是相等的。
步骤 | 来源 |
---|---|
SELECT | 用户id,count(start_date) days_count |
FROM | (select 用户id,销售日期,date_sub(销售日期,interval r_k day)start_date from 销售数据表)T |
GROUP BY | 用户id,start_date |
HAVING | days_count > 1 |
ORDER BY | 用户id |
感受
这组题难度不大,有些指标的计算可能跟实际要求是不符合的,练手可以。问题4和问题5不错。