在线教育案例:如何分析销售数据?

2021-07-09 11:14:48 浏览数 (2)

【面试题】

有一张“课程销售订单表”,包含4个字段:用户id、下单日期、下单id、学科。

问题:查询每个用户第一个订单的记录,如果同时下单了包含多个课程的订单,则按照“语文、数学、英语”顺序排序。

【解题步骤】

1. 汇总分析

查询“每个用户第一个订单”,涉及到“每个”,要想到《猴子 从零学会SQL》里讲过的要用“分组汇总”解决该类问题。按用户id分组(group by),第一个订单的记录是指“下单日期”这一列最小的值(汇总用min函数)

查询结果:

2. 多表联结

上面只获取到第一次下单用户的用户id、第一次下单日期。而题目要求如果同时下单了包含多个课程的订单,则按照“语文、数学、英语”顺序排序。

这就要获取到表里的其它数据。可以把上面查询结果作为表a1,和“课程销售订单表”(记为表a2)进行多表联结。

使用多表联结,查询每个用户第一个订单的记录:

查询结果:

3. 自定义排序

按照“语文、数学、英语”顺序排序,涉及到自定义排序:order by field()的使用。

【本题考点】

1.涉及到“每个”的问题,要想到《猴子从零学会SQL》里讲过的用“分组汇总”或者“窗口函数”来解决

2.考查对多表联结的应用

3.考查对order by中自定义排序的使用

推荐:如何从零学会SQL?

0 人点赞