【SQL】餐馆营业额七日均线数据

embedded/2024/12/23 6:09:14/

目录

题目

分析

代码


题目

表: Customer

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| customer_id   | int     |
| name          | varchar |
| visited_on    | date    |
| amount        | int     |
+---------------+---------+
在 SQL 中,(customer_id, visited_on) 是该表的主键。
该表包含一家餐馆的顾客交易数据。
visited_on 表示 (customer_id) 的顾客在 visited_on 那天访问了餐馆。
amount 是一个顾客某一天的消费总额。

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

计算以 7 天(某日期 + 该日期前的 6 天)为一个时间段的顾客消费平均值。average_amount 要 保留两位小数。

结果按 visited_on 升序排序

返回结果格式的例子如下。

示例 1:

输入:
Customer 表:
+-------------+--------------+--------------+-------------+
| customer_id | name         | visited_on   | amount      |
+-------------+--------------+--------------+-------------+
| 1           | Jhon         | 2019-01-01   | 100         |
| 2           | Daniel       | 2019-01-02   | 110         |
| 3           | Jade         | 2019-01-03   | 120         |
| 4           | Khaled       | 2019-01-04   | 130         |
| 5           | Winston      | 2019-01-05   | 110         | 
| 6           | Elvis        | 2019-01-06   | 140         | 
| 7           | Anna         | 2019-01-07   | 150         |
| 8           | Maria        | 2019-01-08   | 80          |
| 9           | Jaze         | 2019-01-09   | 110         | 
| 1           | Jhon         | 2019-01-10   | 130         | 
| 3           | Jade         | 2019-01-10   | 150         | 
+-------------+--------------+--------------+-------------+
输出:
+--------------+--------------+----------------+
| visited_on   | amount       | average_amount |
+--------------+--------------+----------------+
| 2019-01-07   | 860          | 122.86         |
| 2019-01-08   | 840          | 120            |
| 2019-01-09   | 840          | 120            |
| 2019-01-10   | 1000         | 142.86         |
+--------------+--------------+----------------+
解释:
第一个七天消费平均值从 2019-01-01 到 2019-01-07 是restaurant-growth/restaurant-growth/ (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

分析

Customer 表,包含顾客id、顾客姓名、消费时间、消费金额

单表复杂任务,考虑连接、子查询等方法

计算以 7 天(某日期 + 该日期前的 6 天)为一个时间段的顾客消费平均

考虑到同一天可能存在多条顾客消费记录,需要按照七日为一个时间段,先按照日期分组,

with t as 

(

select visited_on, sum(amount) amount

from Customer

group by visited_on

)

交叉连接

from t a, t b

通过datediff以七天为一个时间段

where datediff(a.visited_on,b.visited_on) between 0 and 6

group by a.visited_on

having count(*)=7

按照输出格式处理计算相关列

select 

a.visited_on,

sum(b.amount) amount,

round(sum(b.amount)/7,2) average_amount

average_amount 要 保留两位小数

通过round实现,round(sum(b.amount)/7,2) average_amount

结果按 visited_on 升序排列

考虑全面可添加order by,不过这里case原表即按 visited_on 升序排列,故也可以通过

代码

with t as 
(select visited_on, sum(amount) amountfrom Customergroup by visited_on
)select a.visited_on,sum(b.amount) amount,round(sum(b.amount)/7,2) average_amount
from t a, t b
where datediff(a.visited_on,b.visited_on) between 0 and 6
group by a.visited_on
having count(*)=7


http://www.ppmy.cn/embedded/104635.html

相关文章

大一地信新生,如何从0规划学习WebGIS开发!附通关攻略

关于学习WebGIS开发,很多GIS专业的学生,从大一开始苦恼从哪里入手?内容太多,不知道什么是重点?不了解企业实际应用情况,怕所学非所用。关于这一点,小编通过本文详细介绍一下! WebGIS&#xff…

区块链通证系统功能分析

区块链通证系统功能分析涉及多个关键方面,以确保系统能够满足不同的业务需求和合规性要求。 同质与非同质通证:区块链通证系统需要支持同质通证(如ERC-20)和非同质通证(如ERC-721),以适应不同类…

聚水潭ERP集成用友U9(聚水潭主供应链)

源系统成集云目标系统 用友U9介绍 用友U9是中型及中大型制造业云ERP,为企业打造数智智造全场景应用,多组织协同,构建企业生态圈,集团化全球化,项目制造实现闭环,聚焦中型和中大型制造企业,全面…

Kevin‘s notes about Qt---Episode 3 在界面中修改程序参数Demo

Demo 效果 实现一个加法器,在输入框中分别填入a和b的值,点击“calculate”按钮,在sum处显示a+b的结果。 整体结构 我自己先写了一个模板用于测试从文本框获取输入数据,整个工程的结构如下: 说明: func_myself.h和func_myself.cpp是我自己创建的头文件和源文件,用于定…

1450. 在既定时间做作业的学生人数(24.9.1)

题目 给定两个整数数组startTime(开始时间)和endTime(结束时间),并指定一个整数queryTime作为查询时间。已知,第i名学生在startTime[i]时开始写作业,并于endTime[i]时完成作业。 请返回在查询…

一文读懂flask--gunicorn是如何启动flask应用

一文读懂flask–gunicorn是如何启动flask应用 1.gunicorn是如何启动flask应用的 在了解了开发模式下flask是如何启动,并且是如何监听请求,在收到请求后又是怎么处理请求之后,接下来进一步了解在生产环境中最常用的gunicorn是如何启动、如何…

最新保姆级教程

如何使用 WildCard 服务注册 Claude3 随着 Claude3 的震撼发布,最强 AI 模型的桂冠已不再由 GPT-4 独揽。Claude3 推出了三个备受瞩目的模型:Claude 3 Haiku、Claude 3 Sonnet 以及 Claude 3 Opus,每个模型都展现了卓越的性能与特色。其中&a…

C练手题--Exclusive “or“ (xor) Logical Operator 【8 kyu】

一、原题 链接:Training on Exclusive "or" (xor) Logical Operator | Codewars Exclusive "or" (xor) Logical Operator Overview In some scripting languages like PHP, there exists a logical operator (e.g. &&, ||, and, or, e…