内测019:门店营收数据看板
#Quiz #Java #Sql #Report #Scenario
1.数据看板
服务好加盟主,做好门店营收看板,越简单越一针见血,就越好。 为了简化场景,如下原型图中的名词及解读做了简化处理。
① 门店下拉框,数据变化时,切换门店。
- 加盟主名下有多家店时,可以下拉切换,否则只读。
- 门店名字以地理位置命名,可读性优先。
- 切换,影响②至⑦
② 当日(today)营收,热数据,本地时区。
- 日期可以切换,默认当日,不可选未来日
- 不早于成立日,不超过门店注销日
- 金额汇总于当前时点的已完成的有效订单
- 切换,影响③至⑦
③ 冷数据看板,提供日/月/年的对比数据
- 昨天(yesterday),指②中的today -1 day
- 当月(thisMonth),指 month(昨天),从1日到昨天(含)
- 今年(thisYear),指 year(昨天),从1月1日到昨天(含)
- 切换,影响④至⑦
④ 营收,指已完成的有效订单金额汇总
- 已完成,表示客人已收货
- 有效,为正常完成,非取消,异常等
⑤ 来客数,指④中的订单数
- 假设同一客人买N单,来客数是N
⑥ 同比,环比,排除部分季节因素看增长
- 同比(YoY), year-1,
2020
-03 vs2019
-03 - 同比增长,(本期 - 同期) ÷ 同期 x 100%
- 环比(MoM), month-1,2020-
03
vs 2020-02
- 环比增长,(本期 - 上期) ÷ 上期 x 100%
- 增长用红色和上箭头,下降用绿色和下箭头
⑦ 汇总信息
- 平均客单价,④中订单金额平均值
- 门店总数,止于昨天的门店总数,不受①影响
- 会员数,止于昨天的订单的独立客人数,不受①影响
- 外卖占比,④中订单数中的外卖订单比例
2.日时问题
在统计订单时,需要进行日期时间(datetime)比较和处理。
日期比较,推荐用以00:00:00.0
的闭开区间进行。
考虑闰年,不考虑时区,夏令时和闰秒(知识点翻往期视频分享)。
- Yoy的规则是 year - 1
- Mom的规则是 Month - 1
- 昨天的规则是 Day -1
- 当月的规则是 当月1日到昨天
- 今年的规则是 1月1日到昨天
- 没有对应日则月末对齐,如闰年,大小月
举例A,today=2020-03-01
,则 yesterday=2020-02-29
- 同比:昨日本期,thisDayYoy=
2020-02-29
- 同比:昨日同期,thatDayYoy=
2019-02-28
- 同比:当月本期,thisMonthYoy=
2020-02-01
-2020-02-29
- 同比:当月同期,thatMonthYoy=
2019-02-01
-2019-02-28
- 同比:今年本期,thisYearYoy=
2020-01-01
-2020-02-29
- 同比:今年同期,thatYearYoy=
2019-01-01
-2019-02-28
- 环比:昨日本期,thisDayMom=
2020-02-29
- 环比:昨日上期,thatDayMom=
2020-01-29
- 环比:当月本期,thisMonthMom=
2020-02-01
-2020-02-29
- 环比:当月上期,thatMonthMom=
2020-01-01
-2020-01-29
- 环比:今年本期,thisYearMom=
2020-01-01
-2020-02-29
- 环比:今年上期,thatYearMom=
2020-01-01
-2020-01-29
举例B,today=2020-03-31
,则 yesterday=2020-03-30
- 同比:昨日本期,thisDayYoy=
2020-03-30
- 同比:昨日同期,thatDayYoy=
2019-03-30
- 环比:昨日本期,thisDayMom=
2020-03-30
- 环比:昨日上期,thatDayMom=
2020-02-29
通过例A和例B,应该可以清晰的发现规律,不做赘述。
3.任务说明
本任务重点在于数据处理能力,对于知识点不清楚的,可以google。
① 写程序mock出样本数据,模拟门店,顾客,订单
- 保存成csv格式,utf8编码(后面有用)
- 日期从2019-01-01(含)至2020-03-31(含)
- 每月新开业1个门店,开业日期当月随机,一共15个
- 门店命名,
测试店#
,其中#
为[A-Z]
- 从门店开业日起,每天随机10-20个完成的有效订单
- 订单金额10-30随机,新老客人随机下单
- 每天随机新增1-5个客人,同老客人一起下单
- 客人会员码,固定12位数字,唯一递增可不连续
- 订单号固定12位,要求唯一,最好有业务含义
csv中都是都是有效已完成订单,简化后,应该包含,
- 订单号
- 门店id及名称
- 订单完成日期时间,精确到秒
- 订单客人,会员码
- 订单金额,人民币,精确到分
② 上传csv,并保存到数据库(mysql,utf8mb4)
- 创建数据表,使用合适的数据结构和数据类型
- 写一个server端,通过 http post接受 csv文件
- 解析csv文件,保持到数据库
- 如果csv文件中有一天数据错误,则全文件失败
- 尽可能给客服端显示失败原因和数据位置
- 如有重复数据,以完成时间为准,新覆盖旧
③ 从数据库中,生成看板需要数据
- 如前后端分离,则构造json接口
- 如不分离,直接展示功能,不要颜值。
- 可考虑缓存或预处理
根据个人技术栈,自由完成以上任务,不限时,不限完成度。
编程能力强者,建议多发挥,写高质量的工程代码 数据能力强者,可写sql 界面能力强者,可以实现看板的页面功能
总之,需要自己构造简单的数据,完成基础的test case
–
※ 我们的征途是星辰大海 ※
题图:一周拼上线的首台自助点餐机。重点是周董亲自摸过,很舒服,现已搬到门店,欲摸从速。