题解 | #10月的新户客单价和获客成本#

10月的新户客单价和获客成本

https://www.nowcoder.com/practice/d15ee0798e884f829ae8bd27e10f0d64

select
  round(avg(total_amount),1),
  round(avg(cost),1)
from
(
    select
      order_id,
      uid,
      total_amount,
      event_time
    from
(
        select
          order_id,
          uid,
          total_amount,
          event_time,
          row_number() over (
            partition by uid
            order by
              event_time
          ) as rn
        from
          tb_order_overall

      ) a
    where
      rn = 1 
    and date_format(event_time, '%Y-%m') = '2021-10'
  ) aa
  left join(
    select
      a.order_id,
      sum(price * cnt) - avg(total_amount) as cost
    from
      tb_order_detail a
      left join (
        select
          order_id,
          uid,
          total_amount,
          event_time
        from
(
            select
              order_id,
              uid,
              total_amount,
              event_time,
              row_number() over (
                partition by uid
                order by
                  event_time
              ) as rn
            from
              tb_order_overall
          ) a
        where
          rn = 1
    and date_format(event_time, '%Y-%m') = '2021-10'
      ) b on a.order_id = b.order_id
    group by
      a.order_id
  ) bb on aa.order_id = bb.order_id

全部评论
row_number的执行顺序是在where之后,所以需要在外层筛选时间。
点赞 回复 分享
发布于 2022-12-24 21:04 江苏

相关推荐

点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务