累加功能的实现 (累计计算)
2013-01-10 17:45
218 查看
用户,日 期, 当日消费金额。
001 2013-1-10 100
002 2013-1-10 200
001 2013-1-11 50
002 2013-1-11 80
001 2013-1-12 300
得到
用户,日期, 当日消费金额,累计消费金额
001 2013-1-10 100 100
002 2013-1-10 200 200
001 2013-1-11 50 150
002 2013-1-11 80 280
001 2013-1-12 300 450
实现方式如下:
mysql支持:
SELECT FIELD1,FIELD2,FIELD3,
( SELECT SUM(FIELD3)
FROM TEST_AA
WHERE FIELD1 = A.FIELD1
AND FIELD2 <= A.FIELD2
) AS FIELD4
FROM TEST_AA A
但hive不支持这个。
mysql实现方式二:(QQ网友西瓜小王子(365742944) 提供 ):
select a.f1,a.f2,a.f3,sum(b.f3)
from
(select f1,f2,f3 from test_A) a
join (select f3 from test_A ) b
on (a.f1 = b.f1 and a.f2 >= b.f2)
group by a.f1,a.f2.a.f3
但由于hive不支持 join 条件 on中不等于,故也无法在hive中实施。
还有一种方式:
select a.id,a.date,a.num as nu,sum(if(a.date>=b.date,b.num,0))
from
(select id,date,num from cost)a
join
(select id,date,num from cost)b
on (a.id = b.id )
GROUP by a.id,a.date,a.num
西瓜小王子 18:18:59
hive 中我试了,没问题
西瓜小王子 18:20:33
但是这样会在内存中制造count(*) 乘以count(*) 级数的数据
经过试验,是可以正常运行,但由于数量级是全join,故hive执行起来也很慢。
001 2013-1-10 100
002 2013-1-10 200
001 2013-1-11 50
002 2013-1-11 80
001 2013-1-12 300
得到
用户,日期, 当日消费金额,累计消费金额
001 2013-1-10 100 100
002 2013-1-10 200 200
001 2013-1-11 50 150
002 2013-1-11 80 280
001 2013-1-12 300 450
实现方式如下:
mysql支持:
SELECT FIELD1,FIELD2,FIELD3,
( SELECT SUM(FIELD3)
FROM TEST_AA
WHERE FIELD1 = A.FIELD1
AND FIELD2 <= A.FIELD2
) AS FIELD4
FROM TEST_AA A
但hive不支持这个。
mysql实现方式二:(QQ网友西瓜小王子(365742944) 提供 ):
select a.f1,a.f2,a.f3,sum(b.f3)
from
(select f1,f2,f3 from test_A) a
join (select f3 from test_A ) b
on (a.f1 = b.f1 and a.f2 >= b.f2)
group by a.f1,a.f2.a.f3
但由于hive不支持 join 条件 on中不等于,故也无法在hive中实施。
还有一种方式:
select a.id,a.date,a.num as nu,sum(if(a.date>=b.date,b.num,0))
from
(select id,date,num from cost)a
join
(select id,date,num from cost)b
on (a.id = b.id )
GROUP by a.id,a.date,a.num
西瓜小王子 18:18:59
hive 中我试了,没问题
西瓜小王子 18:20:33
但是这样会在内存中制造count(*) 乘以count(*) 级数的数据
经过试验,是可以正常运行,但由于数量级是全join,故hive执行起来也很慢。
相关文章推荐
- oracle实现累加,累计百分比计算
- 根据公式计算y的值。其中∑表示求各项的和,∏表示求各项的积。定义一个类F,实现上述功能。具体要求如下:
- 10-使用EL表达式实现累加的功能
- Python基于pyCUDA实现GPU加速并行计算功能入门教程
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Oracle分析函数实现报表功能(同比,环比,累计,基比)
- JavaScript实现的超简单计算器功能示例
- 医院管理系统(实现功能:浏览医院的整体结构,给定任意节点输出该节点信息就子节点信息,计算在给出点之间的“病房的数量”)
- 计算原生代码+json实现购物车结算功能
- Java实现的贷款金额计算功能示例
- Asp.Net 中实现DataGrid指定列的自动累加,汇总,显示合计列功能
- C++实现计算器功能(包括计算含未知量的式子),输出后缀表达式
- Android编程实现canvas绘制柱状统计图功能【自动计算宽高及分度值、可左右滑动】
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- [导入]Asp.net 2.0 自定义控件开发[实现自动计算功能(AutoComputeControl)][示例代码下载]
- JQ实现maxlength功能,中英文都按字符计算
- 实现Linux下dc的功能,计算后缀表达式的值