暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL脚本案例【11】查询每个商品销量最高的日期

皮皮克克 2024-04-21
127

点击关注公众号,干货第一时间送达


这题不难,

只要看过小编前面的文章:

SQL脚本案例【7】每个学生,按各科成绩排序,并显示排名

掌握了如何使用 "开窗排序" 即可。

今天再看一遍,权当复习巩固了吧。

【温馨提示:建表语句及数据导入脚本,可以翻看前面的文章:

SQL脚本案例【8】查询累积销量排名第二的商品


一、需求场景

题目: 

从订单明细表order_detail中,查询每个商品销售件数最多的日期及当日销量,如果有商品多日销量并列,取最小的日期。

订单明细表order_detail:

正确结果:


二、解决方案

演示工具:Hive-3.1.3 + DataGrip2022


解题的思路就是需要先按照商品(sku_id)和销售日(creat_date)

进行分组,sum() 销量,

因为可能存在同一件商品(sku_id),同一天有多笔订单,

所以需要累加上每笔订单的 sku_num。

再对每日的销量进行开窗排序,然后取第1名即可。


(1)分组计算每个商品的单日总销量

select sku_id, create_date, sum(sku_num) as amt
from order_detail
group by sku_id, create_date


结果集:

(2)对每个商品的单日总销量进行开窗排序

select sku_id,create_date,
    amt,
    dense_rank() over (partition by sku_id order by amt descas rk
from (
      select sku_id, create_date, sum(sku_num) as amt
      from order_detail
      group by sku_id, create_date
  )t1


结果集:

(3)筛选每个商品的单日总销量最高的即可

select *
from (
   select sku_id,create_date,
          amt,
          dense_rank() over (partition by sku_id order by amt descas rk
   from (
            select sku_id, create_date, sum(sku_num) as amt
            from order_detail
            group by sku_id, create_date
        )t1
)t2
where rk=1


结果集:


结束语:
Ok,就是本篇文章的全部内容了。
如果各位有不懂的地方,欢迎发消息给小编,小编会进行详细地解答。
最后,请屏幕前的各位吴彦祖和刘亦菲们,动动你们的小手,给小编一个

文章转载自皮皮克克,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论