首页 > 其他分享 >1321. 餐馆营业额变化增长

1321. 餐馆营业额变化增长

时间:2023-06-04 09:22:26浏览次数:36  
标签:营业额 1321 120 amount 01 餐馆 110 visited 2019

【题目】

表: Customer

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

 

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

写一条 SQL 查询计算以 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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/restaurant-growth
【思想】

用开窗函数

首先选 将表处理成以visited_on分组的amount和的形式

然后在这个和的表中开窗函数选取 rows 6 preceding最近6个数据的信息,然后计算累加和和平均值

接着在这个表中选取比最小时间还要大6的日期数据,保证能有7个日期的信息。

【代码】

SELECT DISTINCT visited_on,sum_amount as amount, round(average_amount,2) as average_amount
FROM (
    SELECT visited_on,
        sum(amount) over(order by visited_on rows 6 preceding) as sum_amount,
        avg(amount) over(order by visited_on rows 6 preceding) as average_amount
    FROM(
        SELECT visited_on,sum(amount) as amount
        FROM Customer
        group by visited_on
    ) t1
)t2
WHERE datediff(visited_on,(SELECT MIN(visited_on) FROM Customer))>=6

 

标签:营业额,1321,120,amount,01,餐馆,110,visited,2019
From: https://www.cnblogs.com/End1ess/p/17455200.html

相关文章

  • 开餐馆
    题目描述北大信息学院的同学小明毕业之后打算创业开餐馆。现在共有nnn个地点可供选择,小明打算从中选择合适的位置开设一些餐馆。这 nnn个地点排列在同一条直线上。我们用一个整数序列m1,m2,…,mnm_1,m_2,\dots,m_nm1​,m2​,…,mn​来表示他们的相对位置。由于地段关......
  • leetcode 1321 餐館營業額變化增長
    leetcode1321餐館營業額變化增長selectdistinctc2.visited_on,(selectsum(amount)fromCustomerc1wherec1.visited_on<=c2.visited_onandc1.visited_on>=date_sub(c2.visited_on,interval6day))asamount,round((selectsum(amount)fromCustomerc1......
  • kuangbin专题一 简单搜索 棋盘问题(POJ-1321)
    棋盘问题TimeLimit:1000MS MemoryLimit:10000KTotalSubmissions:125427 Accepted:56304Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘......
  • 2023/1/16 20221321杨渝学习打卡
    python入门学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439字典的循环打印(解构)字典......
  • 2023/1/15 20221321杨渝学习打卡
    python学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439对字典的操作字典的使用对......
  • 2023/1/14 20221321杨渝学习打卡
    python学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439元组字典元组元组,英文为t......
  • POJ1321 棋盘问题
    POJ1321棋盘问题在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状......
  • 2023/1/12 20221321杨渝学习打卡
    python入门学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439对集合,列表的操作对集合......
  • 2023/1/11 20221321杨渝学习打卡
    python入门学习学习链接:https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439集合列表集合先看c语......
  • 2023/1/10 20221321杨渝学习打卡
    python入门学习学习链接https://www.bilibili.com/video/BV14r4y1k7F9/?spm_id_from=333.999.0.0&vd_source=a989a1afa6cb8b6527dd9bf059d71439if判断while循环布尔......