题57:
根据下表写一条 SQL 查询计算以 7 天(某日期 + 该日期前的 6 天)为一个时间段的顾客消费平均值,查询结果按 visited_on 排序,average_amount 要 保留两位小数。
其中:
- (customer_id, visited_on) 是该表的主键,该表包含一家餐馆的顾客交易数据
- visited_on 表示 (customer_id) 的顾客在 visited_on 那天访问了餐馆
amount 是一个顾客某一天的消费总额
代码如下:
select distinct visited_on,
sum_amount as amount,
round (sum_amount/7,2) as average_amount--根据b表计算每7天的平均销售额
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
) a --此表主要是把每天的销售额加起来
) b
where datediff(
visited_on, (
select min(visited_on)
from Customer)) >=6;筛选条件,一定要有7天