Medium之1321.餐馆营业额变化增长***

该博客介绍了如何使用SQL查询计算餐馆每天的7天消费平均值,以分析营业额变化。通过窗口函数计算每个日期前6天的消费总和,然后除以7得到平均值,结果按日期排序并保留两位小数。示例展示了具体的数据和查询结果,帮助理解SQL在数据分析中的应用。
摘要由CSDN通过智能技术生成

表: Customer

Column NameType
customer_idint
namevarchar
visited_ondate
amountint
(customer_id, visited_on) 是该表的主键
该表包含一家餐馆的顾客交易数据
visited_on 表示 (customer_id) 的顾客在 visited_on 那天访问了餐馆
amount 是一个顾客某一天的消费总额

问题

你是餐馆的老板,现在你想分析一下可能的营业额变化增长(每天至少有一位顾客)

写一条 SQL 查询计算以 7 天(某日期 + 该日期前的 6 天)为一个时间段的顾客消费平均值
查询结果按 visited_on 排序
average_amount 要 保留两位小数,日期数据的格式为 (‘YYYY-MM-DD’)

示例

Customer 表:

customer_idnamevisited_onamount
1Jhon2019-01-01100
2Daniel2019-01-02110
3Jade2019-01-03120
4Khaled2019-01-04130
5Winston2019-01-05110
6Elvis2019-01-06140
7Anna2019-01-07150
8Maria2019-01-0880
9Jaze2019-01-09110
1Jhon2019-01-10130
3Jade2019-01-10150

Result表:

visited_onamountaverage_amount
2019-01-07860122.86
2019-01-08840120
2019-01-09840120
2019-01-101000142.86

第一个七天消费平均值从 2019-01-01 到 2019-01-07 是 (100 + 110 + 120 + 130 + 110 + 140 + 150)/7 = 122.86
第二个七天消费平均值从 2019-01-02 到 2019-01-08 是 (110 + 120 + 130 + 110 + 140 + 150 + 80)/7 = 120
第三个七天消费平均值从 2019-01-03 到 2019-01-09 是 (120 + 130 + 110 + 140 + 150 + 80 + 110)/7 = 120
第四个七天消费平均值从 2019-01-04 到 2019-01-10 是 (130 + 110 + 140 + 150 + 80 + 110 + 130 + 150)/7 = 142.86

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/restaurant-growth
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

select visited_on,
    sum_amount amount,
    round(sum_amount/7,2) average_amount
from(
    select visited_on,
            sum(amount) over(order by visited_on rows 6 preceding) sum_amount
    from (
        select customer_id,visited_on,sum(amount) amount
        from customer
        group by visited_on
        ) t
    ) tt 
order by visited_on
WHERE DATEDIFF(visited_on, (SELECT MIN(visited_on) FROM Customer)) >= 6  #限制时间从第7天开始
知识点

1.ROWS 6 PRECEDING等价于rows between 6 proceding and current row
:表示取当前行和前六行;

2.表t用来解决一天中客户有多次消费,这样向前滑动6行就会有误,所以要先整理好每个客户在每天的总消费。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Caused by: java.lang.ClassNotFoundException: com.huawei.org.owasp.esapi.errors.Encrypt*****#*#*****是一个Java异常,它表示在程序运行时未找到特定类。根据引用和引用的描述,这个异常通常发生在Java应用程序中,可能是由于缺少相应的依赖库或jar包导致的。为了解决这个问题,你可以按照以下步骤进行操作: 1. 检查你的项目的依赖配置,确保你已经包含了`com.huawei.org.owasp.esapi.errors.Encrypt`所在的jar包。 2. 如果没有包含该jar包,你可以尝试手动将其添加到你的项目依赖中。具体方法可以参考引用中的示例代码。 3. 如果你已经包含了该jar包,但仍然出现这个异常,可能是由于jar包版本不兼容或者jar包损坏导致的。你可以尝试更新或重新下载该jar包,并替换原来的jar包。 4. 如果以上方法都没有解决问题,你可以尝试在搜索引擎中搜索这个异常的具体信息,看看其他人是否遇到了相同的问题,并找到了解决方法。 请注意,以上方法仅供参考,具体解决方法可能因情况而异。最好的解决办法是根据你的具体情况和项目要求进行调试和排查。如果问题仍然存在,建议咨询相关的开发人员或论坛以获取更具体的帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Android Caused by: java.lang.ClassNotFoundException解决办法](https://download.csdn.net/download/weixin_38703295/12784351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常](https://download.csdn.net/download/weixin_38642864/12723222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [出现 **caused by: java.lang.ClassNotFoundException: org.springframework.boot.actuate.autoconfigure....](https://blog.csdn.net/HENG_YUAN/article/details/119304956)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值