使用Oracle分析函数

时间:2015-04-28 16:46:42

标签: oracle oracle-analytics

我需要使用max(timestamp)获取每个不同帐户(acc)的bal和res列之间的总和,请看:

  ID    ACC BAL RES TIMESTAMP
  --------------------------
  1 100 70  0   1430238709
  2 101 4   0   1430238710
  3 102 0   0   1430238720
  4 103 3   1   1430238721
  5 100 22  1   1430238731
  6 101 89  0   1430238732
  7 102 101 1   1430238742
  8 103 105 1   1430238753
  9 100 106 0   1430238763
 10 101 100 1   1430238774
 11 102 1   1   1430238784
 12 103 65  0   1430238795

我需要的是MAX(timestamp) <= 1430238763sum: bal + res按照以下方式分组:

ACC TOT
-------
100 106
101 89
102 102
103 106

我知道如何使用子查询来完成它,但我想尝试分析。

此致

2 个答案:

答案 0 :(得分:0)

怎么样:

选择*来自(   选择t。*,max(TIMESTAMP)over(partition by id)mx 来自tab t ) 其中mx = TIMESTAMP;

HTH

答案 1 :(得分:0)

如果没有子查询,您的查询就无法解决。

select acc,sum(bal + res) from table_name where timestamp in 
(select acc,max(timestamp) from table_Name group by acc having hax(timestamp)<=1430238763)
问候。