美文网首页
Leetcode1321. 餐馆营业额变化增长(中等)

Leetcode1321. 餐馆营业额变化增长(中等)

作者: kaka22 | 来源:发表于2020-07-21 23:25 被阅读0次

题目
表: 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 天)为一个时间段的顾客消费平均值

查询结果格式的例子如下:

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

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 是 (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

解答

这不就很像窗口函数么
先选出最终表的visited_on

select C.visited_on
from Customer as C
where C.visited_on >= DATE_ADD((SELECT min(visited_on) FROM customer), INTERVAL 6 DAY);

然后与主表左连接
连接条件就是左表的时间要大于右表的时间 而且 右表的时间+6要大于左表的时间

select tmp.visited_on, sum(CC.amount) as amount,
avg(CC.amount) as average_amount
from (select C.visited_on
from Customer as C
where C.visited_on >= DATE_ADD((SELECT min(visited_on) FROM customer), INTERVAL 6 DAY)) as tmp
left join Customer as CC
on tmp.visited_on >= CC.visited_on and DATE_ADD(tmp.visited_on, INTERVAL 6 DAY) >= tmp.visited_on
group by tmp.visited_on

别的解答

先对每个表按日期进行去重求和,然后做笛卡尔积,然后筛选出符合条件的,再之后排序。得到答案

select c1.visited_on,sum(c2.amount) amount,round(sum(c2.amount)/7,2) average_amount
from 
(select customer_id,name,visited_on,sum(amount) amount from Customer group by visited_on)c1 cross join 
(select customer_id,name,visited_on,sum(amount) amount from Customer group by visited_on) c2 
where datediff(c1.visited_on,c2.visited_on)<7  and datediff(c1.visited_on,c2.visited_on)>=0
group by c1.visited_on
having count(*)>6
order by c1.visited_on

相关文章

  • Leetcode1321. 餐馆营业额变化增长(中等)

    题目表: Customer (customer_id, visited_on) 是该表的主键该表包含一家餐馆的顾客...

  • 你的产品拥有了aha时刻吗?

    无论哪个行业与企业,都会很看重“增长”二字,营业额的增长、利润增长、客户增长,流量增长… 今天听了两次【增长黑客】...

  • 费雪的投资原

    原则1:公司产品或服务有没有充分的市场潜力,至少几年内营业额能否大幅增长。其中营业额的长期增长比短期成本下降更为重...

  • 《梁宁·增长思维30讲》

    01在生死进退中增长 企业增长判断指标:年营业额/利润增长≥国家GDP增长*2 善败者不亡。无论胜负,战斗都会让你...

  • 变量的两种状态:存量和流量

    所谓变量,就是系统中变化的数量。比如每天的温度,忽高忽低的变化;一个小店的营业额,忽好忽坏的变化。 所有的变化,都...

  • 什么样的伴侣可以一起走过漫长岁月?

    随着年龄的增长,阅历的丰富,婚恋观也发生了很大的变化。以前想找一个各方面条件中等的石头男,石头男最大的特点就是对爱...

  • 如何开一家赚钱的精酿酒吧

    无论是精酿酒吧还是其他餐馆、实体店、甚至网店都遵从基本的商业规律,这就是:营业利润=营业收入-营业成本;营业额...

  • 下餐馆就餐观念的变化

    今天带父母出去吃饭,因为天气比以往冷,所以我先问了二老的意愿,他们很爽快的答应。 以前,要带父母出去饭馆吃饭,总是...

  • 内衣小王子(三十三)

    客流量的增长对营业部可是天大的利好,客流量是营业额的基础。营业额大小取决于成交量的大小,成交量取决于客流量的大小。...

  • 接吻算不算出轨?

    01 杨淑慧没想到,她竟然有了个出轨的机会。 对方是公司旁边一家小餐馆的老板,叫周海泉,三十出头,中等身高,中等长...

网友评论

      本文标题:Leetcode1321. 餐馆营业额变化增长(中等)

      本文链接:https://www.haomeiwen.com/subject/jupgkktx.html