乐知付加密服务平台

如果你有资源, 平台可以帮你实现内容变现, 无需搭建知识付费服务平台。

点击访问官方网站 https://lezhifu.cc

扫码关注公众号 乐知付加密服务平台-微信公众号
Hive经典sql之花费当月费用与总费用 | chenzuoli's blog

Hive经典sql之花费当月费用与总费用

      现在有这样一个需求:一张表orders中记录了每个用户消费的明细(时间、金额),现在需要求出每个用户当月的消费总金额和总的消费总金额。如何求呢?

1.orders表结构

1
2
3
name    string
dt date
amount double

2.分析

      统计的当月总金额这个汇总值,那么对namemonth进行分组sum(amount)即可得到。
      统计总金额,那么只需对name进行分组即可。

  1. 方法一
    分别求出上面2个汇总值,然后进行join就行:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    select
    name,
    month_amount,
    sum_amount
    from (
    select
    name,
    month(dt) as cur_month,
    sum(amount) as month_amount
    from orders
    group by name, month(dt);
    ) t1
    join
    (
    select
    name,
    sum(amount) as sum_amount
    from orders
    group by name
    ) t2
    on t1.name = t2.name;
  2. 方法二
    使用开窗函数,不在需要表join了:

    1
    2
    3
    4
    5
    select
    name,
    sum(amount) over(partition by name, month(dt)) as month_amount,
    sum(amount) over(partition by name) as sum_amount
    from orders

      开窗函数是不是简单多了?


If somethings in life brings you joy, then you simple have to do it, regardless of what people say.
                                                                  —《海蒂与爷爷》

书山有路勤为径,学海无涯苦作舟。

欢迎关注微信公众号:【程序员写书】
程序员写书

喜欢宠物的朋友可以关注:【电巴克宠物Pets】
电巴克宠物

一起学习,一起进步。

-------------本文结束感谢您的阅读-------------