岁寒清酒叹浮生 2018-03-30 05:25 采纳率: 100%
浏览 2814
已采纳

hive sql数据统计,详细说明一下,我需要弄懂,谢谢了

研究Hive SQL 完成以下统计任务,写出统计sql

CREATE TABLE t_order(
ord_id bigint,//订单号
ord_amount bigint,//订单金额
cust_id bigint,//客户id
ord_time string) //订单时间:格式如2018-01-01 00:00:00
PARTITIONED BY (
dt string)//日期分区,格式20180101

1、统计用户月复购率,用户复购率定义:在上月有订单记录的用户,在本月仍然订单记录的用户,占上月有订单记录的用户的比例。
2、假设表中有2018年1-3月每一天的交易金额,统计1-3月每一个用户每天当月累计到当日的交易金额

  • 写回答

2条回答 默认 最新

  • #朱守成# 2018-03-30 06:53
    关注

    select sum(if(t2.cust_id is not null, 1, 0)) / count(1) from (
    select distinct cust_id from t_order o where o.ord_time>='2018-01-01' and o.ord_time < '2018-02-01'
    ) t
    left join (
    select distinct cust_id from t_order where ord_time>='2018-02-01' and ord_time < '2018-03-01'
    ) t2 on t.cust_id=t2.cust_id

    这是第一个sql, 第一个子查询查出所有1月下单用户,第二个子查询查出所有2月下单用户,用第一个子查询left join 第二个子查询,这样结果集count(1) 仍然是第一个月的所有下单用户 sum(if(t2.cust_id is not null, 1, 0)) 则是二月所有下单用户且1月也下单的用户数

    第二个没明白你的具体需求

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题