Hive 练习 简单任务处理
1、2018年4月份的用户数、订单量、销量、GMV (不局限与这些统计量,你也可以自己想一些)
- -- -- -- 2018年4月份的用户数量
- select
- count(a.user_id) as user_nums
- from
- (
- select
- user_id
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2018-04-01'
- and sale_ord_dt <= '2018-04-30'
- and sale_ord_dt >= '2018-04-01'
- group by
- user_id
- )
- a;
- -- 2018年4月份的订单量
- select
- count(a.sale_ord_id) as sale_nums
- from
- (
- select
- sale_ord_id
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2018-04-01'
- and sale_ord_dt <= '2018-04-30'
- and sale_ord_dt >= '2018-04-01'
- group by
- sale_ord_id
- )
- a;
- -- -- 2018年4月份的销量
- select
- sum(COALESCE(sale_qtty, 0)) as xiaoliang
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2018-04-01'
- and sale_ord_dt <= '2018-04-30'
- and sale_ord_dt >= '2018-04-01';
- -- -- -- 2018年4月份的销售额GMV
- -- user_payable_pay_amount 用户应付金额
- select
- sum(user_payable_pay_amount) as xiaoshoujine
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2018-04-01'
- and sale_ord_dt <= '2018-04-30'
- and sale_ord_dt >= '2018-04-01';
PS:
- 订单数就是卖了几单 ;
- 销量就是卖了多少件,一个订单中可能卖出一件或多件;
- GMV: Gross Merchandise Volume,是成交总额(一定时间段内)的意思。
- 在电商网站定义里面是网站成交金额。这个实际指的是拍下订单金额, 包含付款和未付款的部分。
2、上述这些变化量相对3月份的变化
3、计算2018年4月1号的新用户数量(之前半年未购买的用户为新用户)
- -- 计算2018年4月1号的新用户数量(之前半年未购买的用户为新用户)
- -- 首先找出4月1号的用户的xxx,然后统计半年内有过购买记录的用户yyy。
- -- select distinct user_id as xxx from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01';
- -- select distinct user_id as yyy from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01';
- -- 用xxx-yyy,然后count()计算数量;
- -- 两种方法,一种用not in ,一种用not exists
- -- not in 方法
- select distinct user_id from gdm_m04_ord_det_sum
- where user_id not in (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01');
- -- not exists 方法
- select distinct user_id from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01' where not exists (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01' where gdm_m04_ord_det_sum.user_id=gdm_m04_ord_det_sum.user_id);
- -- 另一种 left outer join 这样效率更高 语法有问题??
- select distinct user_id from gdm_m04_ord_det_sum where dt>='2018-04-01' and sale_ord_dt='2018-04-01' a left outer join (select distinct user_id from gdm_m04_ord_det_sum where dt>='2017-10-01' and sale_ord_dt<='2018-03-31' and sale_ord_dt>='2017-10-01' b) on a.user_id=b.user_id where b.user_id is null;
正确方法:
- select
- count(a.id1) as user_new_nums
- from
- (
- select distinct
- user_id as id1
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2018-04-01'
- and sale_ord_dt = '2018-04-01'
- )
- a
- left outer join
- (
- select distinct
- user_id as id2
- from
- app_jypt_m04_ord_det_di
- where
- dt >= '2017-10-01'
- and sale_ord_dt <= '2018-03-31'
- and sale_ord_dt >= '2017-10-01'
- )
- b
- on
- a.id1 = b.id2
- where
- b.id2 is null;
Hive 练习 简单任务处理的更多相关文章
- Hive 的简单使用及调优参考文档
Hive 的简单使用及调优参考文档 HIVE的使用 命令行界面 使用一下命令查看hive的命令行页面, hive --help --service cli 简化命令为hive –h 会输出下面的这 ...
- [转]Hive:简单查询不启用Mapreduce job而启用Fetch task
转自:http://www.iteblog.com/archives/831 如果你想查询某个表的某一列,Hive默认是会启用MapReduce Job来完成这个任务,如下: hive> SEL ...
- hive中简单介绍分区表
所介绍内容基本上是翻译官方文档,比较肤浅,如有错误,请指正! hive中创建分区表没有什么复杂的分区类型(范围分区.列表分区.hash分区.混合分区等).分区列也不是表中的一个实际的字段,而是一个或者 ...
- [Hive_add_3] Hive 进行简单数据处理
0. 说明 通过 Hive 对 duowan 数据进行简单处理 1. 操作流程 1.1 建表 create table duowan(id int, name string, pass string, ...
- hive 中简单的udf函数编写
.注册函数,使用using jar方式在hdfs上引用udf库. $hive.注销函数,只需要删除mysql的hive数据记录即可. delete from func_ru ; delete from ...
- hive中简单介绍分区表(partition table)——动态分区(dynamic partition)、静态分区(static partition)
一.基本概念 hive中分区表分为:范围分区.列表分区.hash分区.混合分区等. 分区列:分区列不是表中的一个实际的字段,而是一个或者多个伪列.翻译一下是:“在表的数据文件中实际上并不保存分区列的信 ...
- Hive之简单查询不启用MapReduce
假设你想查询某个表的某一列.Hive默认是会启用MapReduce Job来完毕这个任务,例如以下: 01 hive> SELECT id, money FROM m limit 10; 02 ...
- hive的简单使用
一.一些说明 1.支持的操作 hive 默认不支持updata 和 delete操作 insert也是执行缓慢,主要用于数据的计算 hive 数据类型---字符串,大部分与java一致. 2.内外表的 ...
- hadoop生态系统学习之路(六)hive的简单使用
一.hive的基本概念与原理 Hive是基于Hadoop之上的数据仓库,能够存储.查询和分析存储在 Hadoop 中的大规模数据. Hive 定义了简单的类 SQL 查询语言,称为 HQL.它同意熟悉 ...
随机推荐
- struts2核心配置之struts.xml
struts.xml -常量配置 -包配置 -包含配置 一.常量配置 struts2常量的配置通常采用三种方式: 1.在struts.xml中使用<constant>元素配置常量 < ...
- sed 很棒的介绍
选项与参数:-n :使用安静(silent)模式.在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上.但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作) ...
- [xsy1515]小学生数学题
题意:求$\begin{align*}\left(\sum\limits_{i=1}^n\dfrac 1i\right)\%\ p^k\end{align*}$ 数学真是太可爱了== 直接推公式 设$ ...
- 【扩展欧几里得】poj2115 C Looooops
题意大概是让你求(A+Cx) mod 2^k = B的最小非负整数解. 若(B-A) mod gcd(C,2^k) = 0,就有解,否则无解. 式子可以化成Cx + 2^k*y = B - A,可以用 ...
- 【并查集】bzoj1015 [JSOI2008]星球大战starwar
倒着处理删点,就变成了加点,于是并查集. #include<cstdio> using namespace std; #define N 400001 int fa[N],kill[N], ...
- Enable a SQL Server Trace Flag Globally on Linux
https://www.mssqltips.com/sql-server-tip-category/226/sql-server-on-linux// Microsoft has recently r ...
- windbg学习—-.ecxr
.ecxr 命令定位当前异常的上下文信息,并显示指定记录中的重要寄存器 0:000> .ecxr eax=10000000 ebx=7ffd9000 ecx=77386500 edx=002 ...
- MathType如何插入连乘
这个就是连乘符号,只不过看着不习惯......就在眼皮子底下.
- 【Git】GitHub for Windows使用(1)
目录 1.下载GitHub for windows 客户端 2.注册GitHub 3.启动windows端客户端,登录帐号 4.了解Git客户端,从而了解Git的大体功能 5.创建一个新的资源库 6 ...
- [干货]2017已来,最全面试总结——这些Android面试题你一定需要
地址.http://blog.csdn.net/xhmj12/article/details/54730883 相关阅读: 吊炸天!74款APP完整源码! [干货精品,值得收藏]超全的一线互联 ...