每日一题-43(餐馆营业额变化增长)

题43:

根据下表写一条SQL查询计算以7天(某日期+该日期前的6天)为一个时间段的顾客消费平均值。
要求:

  • 查询结果按visited_on排序
  • average_amount要保留两位小数,日期数据的格式为(YYYY-MM-DD)

在这里插入图片描述
解题思路:本题要求按日期来计算连续7天顾客消费平均值

(1)使用窗口函数的话,即使前边的数据不够窗口函数也会将范围内的数据框住并计算,因此需要手动的只要能够完整框住7天就可以;
(2)数据中存在着同一用户在某日多次消费的情况,这样一来即使窗口照旧向前取6天就无法覆盖被挤出去的数据了,因此,需要构建一个小表格用来存放每天的金额总量。

select distinct visited_on,
    sum_amount as amount,
    round(sum_amount/7,2) as average_amount
from(
    select visited_on,
        sum(amount) over (order by visited_on rows 6 preceding) as sum_amount --计算连续7的累计金额
    from(
        select visited_on,
            sum(amount) as  amount
        from Customer
        group by visited_on-- -- 计算每天的金额总量
    ) tt

)ll 
where datediff(visited_on,(
    select min(visited_on)
    from  Customer
)
    ) >=6;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值