玖叶教程网

前端编程开发入门

店铺排名问题,如何解决?


【面试题】


有两张表,“产品表”包含2个字段:产品、产品线。




“订单表”包含7个字段:订单id、顾客id、交易日期、产品、店铺、件数、金额。



问题:查询产品线(category_3)销量排名第二的店铺。


【解题步骤】


1. 解题思路


问题要分析某个产品线的销量情况。能计算“销量”的字段“件数”在“订单表”里,“产品线”在“产品表”里。


因此,涉及到两个表,要想到《猴子从零学会SQL》里讲过的用“多表查询”




为了保留“订单表”里的全部数据,以“订单表”为左表(记为子查询a1),进行左联结。


“产品表”为右表(记为子查询a2)。


关联条件是字段“产品”。

将子查询a1、a2代入:

查询结果:




将以上SQL记为子查询a3。


3. 汇总分析


问题是查询产品线(category_3)销量排名第二的店铺,所以:


1)只需要关注产品线为category_3的订单;


2)按店铺分类汇总,以获得产品线(category_3)在各店铺的销量;


3)销量为“件数”求和,因为每一单不一定只有1件产品。

将子查询a3代入:



将以上SQL记为子查询a4。


4. 窗口函数


查询排名一般使用窗口函数,常见的关于排名的窗口函数有三种:



防止有并列排名的情况,我们选择dense_rank()。

将子查询a4代入:


将以上SQL记为子查询a5。


最后,筛选出排名为2的店铺:

将子查询a5代入:



【本题考点】


1)考查对分组汇总的了解,以及灵活使用来解决业务问题;


2)考查对多表联结的了解,以及灵活使用来解决业务问题;


3)考查对窗口函数的了解。



发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言