数据库 课后习题

一、实战

① 每天交易金额、订单数量、顾客数

1 select date_format(create_time,'%y-%m-%d') as every_day
2         ,sum(order_money)
3         ,sum(status)
4         ,count(distinct member_id)
5 from hy_order_20170410
6 group by date_format(create_time,'%y-%m-%d')

结果:

②每天交易平均客单价

1 select every_day,all_money/all_id
2 from(select sum(order_money) all_money
3         ,count(distinct member_id) all_id
4         ,date_format(create_time,'%y-%m-%d') as every_day
5 from hy_order_20170410
6 group by date_format(create_time,"%y-%m-%d")) as T

结果:

 ③每天订单客单价分布(按最大,最小分成5个等分区间)

 不懂

④查询本周金额最大、最小的订单号及对应的顾客(不会一次性输出)

1 select id,member_id,max(all_money)
2 from (select member_id
3         ,id
4         ,sum(order_money) as all_money
5 from hy_order_20170410
6 where create_time>date_add(now(),interval -2 week)
7 group by member_id) T

⑤删除金额小于0元

1 delete from hy_order_20170410
2 where order_money<1

结果:

⑥把金额小于2元都修改为1

1 update hy_order_20170410
2 set order_money =1
3 where order_money<2

结果:

⑦统计XX日期到XX日期会员购买金额,去掉金额大于1000会员

1 select *
2 from(select member_id,sum(order_money) all_money,create_time
3 from hy_order_20170410
4 where create_time between "2016-12-16" and "2019-09-26" 
5 group by member_id) T
6 where T.all_money<1000

结果:

⑧计算过去一周平均客单价,平均每个顾客购买金额,计算购买平均复购次数

最内层查询代码为:

1 select sum(order_money) as all_money
2         ,count(distinct member_id) as num_id
3         ,sum(status) num_st
4 from hy_order_20170410
5 where create_time>date_add(now(),interval -2 week)
6 group by (member_id)

结果:

 ①平均每个顾客购买金额

1 select sum(all_money)/sum(num_id) 平均每个顾客购买金额
2 from(select sum(order_money) as all_money
3         ,count(distinct member_id) as num_id
4         ,sum(status) num_st
5 from hy_order_20170410
6 where create_time>date_add(now(),interval -2 week)
7 group by (member_id)) T

②平均客单价

1 select all_money/num_st 平均客单价
2 from(select sum(order_money) as all_money
3         ,count(distinct member_id) as num_id
4         ,sum(status) num_st
5 from hy_order_20170410
6 where create_time>date_add(now(),interval -2 week)
7 group by (member_id)) T

③购买平均复购次数

1 select sum(num_st)/sum(num_id) 购买平均复购次数
2 from(select sum(order_money) as all_money
3         ,count(distinct member_id) as num_id
4         ,sum(status) num_st
5 from hy_order_20170410
6 where create_time>date_add(now(),interval -2 week)
7 group by (member_id)) T

posted on 2020-03-12 15:58  LiErRui  阅读(131)  评论(0)    收藏  举报

导航