sql实现oracle分析函数功能 over partition by

oracle、hive都比较好支持分析函数(如sum() over partition by),db2就一般,mysql、sqlite直接就不支持。
因此有必要学会用SQL实现分析函数。

sum() over partition by在Mysql中的替代方法(不适合sqlite因为其不支持本地变量定义)
SET @txn_amt_sum=0;
SELECT A.AGT_NUM, A.AGT_MODIF_NUM, A.EVENT_DAY, 
IF(@last_agt_num = A.AGT_NUM and @last_agt_modif_num = A.AGT_MODIF_NUM, @txn_amt_sum := @txn_amt_sum + txn_amt, @txn_amt_sum := txn_amt) AS TXN_AMT_SUM
FROM TX_DETL_TEMP
ORDER BY A.AGT_NUM, A.AGT_MODIF_NUM, A.EVENT_DAY;
详见:
http://blog.csdn.net/mengtianyalll/article/details/45767603

sqlite替代方法
http://stackoverflow.com/questions/16847574/how-to-use-row-number-in-sqlite
http://stackoverflow.com/questions/14023292/how-to-get-rownum-like-column-in-sqlite-iphone/19199219#19199219

java中的替代方法(比较复杂,未试验)
http://blog.csdn.net/sskicgah/article/details/37650653

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值