目的
又给小白的SQL一场实战练习
让小白入坑数据分析,但不提供学习环境,说明态度不端正,传授体验也不好!
所以,我提供这些,先给自己点赞一个。
实战步骤,说白话一点,分4步完成实战练习。
第一步: 登录实战环境
环境是免费的,就是自己阿里云部署的一个开源BI工具superset学习网站,但你需要申请权限。
练习数据网址
Supersetsuperset.workerindata.com为方便练习SQL,提供一个公共账号
用户名:hi-zhihu
密码:justdoit
提醒:首次打开网站可能略慢~
打开网站,输入用户名和密码,点击SQL Lab选择数据库employees_samples,并进行练习, 具体见下面几秒钟小视频,非常方便。
第二步: 介绍练习数据
进入SQL Lab后,左上方,选择Database=employees_samples, Schema=coffeeshop
本次练习数据,都在数据库coffeeshop中,共计7张表
mysql> show tables;
+----------------------+
| Tables_in_coffeeshop |
+----------------------+
| coupon_info |
| desk_info |
| order_detail |
| order_info |
| product |
| user_coupon_detail |
| user_info |
+----------------------+
这些表结构,你也可以通过网站中SQL Lab看到, 如下图左侧,用上面我提供的用户名密码登录,去玩耍吧~
第三步: 提出数据需求
数据需求,来自之前的一篇文章数据民工来取经儿:极简教程:助小白入坑数据分析(二)
根据数据库coffeeshop里面提供的表以及数据,完成下面作业吧,我觉得还算实用,也比较简单。
9个小练习,满足你实战的小欲望:
- 每个用户消费频次: 来光顾次数越多,自然用户价值越高
- 消费频次的用户数分布: freq, userNum
- 每个用户最近一次消费日期: 最后一次消费的用户,更应被关注
- 每天首次消费的用户数,目的查看付费拉新状态: firstPayDay, userNum
- 每次消费时长的用户数分布,按小时数group by, 输出: hourNum, userNum
- 每个桌子累计订单量和用户量: deskId, orderNum, deskNum
- 桌子座位数的对应的订单量, 目的是看用户是喜欢单独过来还是约朋友过来: seatNum, orderNum
- 优惠券过期日期的对于用户数, 目的便于到期前消费提醒, 输出: date, userNum
- 每个用户消费总金额: 这个..直接用钱来衡量了, 假设优惠券类型只有折扣类型,没有满减类型
除了第9题关联的表比较多,其他的最多join一次就能出结果,所以...至少前8道题目要自己写出来。
运行环境和练习数据,都已ready,所以..你要转数据分析师,学完基本SQL语法,上面几道题检验检验吧?
第四步: 提供练习答案
下面是前3个题目的答案:
- 第1题:
SELECT userid, count(*) as freq from order_info group by userid
- 第2题:
select t1.freq, count(*) as userNum
from
(SELECT userid, count(*) as freq from order_info group by userid) t1
group by t1.freq
order by t1.freq
- 第3题:
SELECT userid, date(max(payTime)) as freq from order_info group by userid
关于其他答案
其他答案我会放到上面的学习网站上,每道题目我都写好,并在网站上制作好报表,你可以参照下面视频找到每个题目对应的SQL
希望你刷题愉快~
精选文章
数据民工来取经儿:超级菜鸟如何入坑数据分析