使用 Oracle 分析函数从使用 max 的列中获取数据而不是另一列
Posted
技术标签:
【中文标题】使用 Oracle 分析函数从使用 max 的列中获取数据而不是另一列【英文标题】:Fetch data from columns using max over another column using Oracle analytic functions 【发布时间】:2015-04-28 16:46:41 【问题描述】:我需要使用 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) <= 1430238763
,sum: bal + res
按 acc 分组,如下所示:
ACC TOT
-------
100 106
101 89
102 102
103 106
我知道如何使用子查询,但我想试试 Analytics。
问候
【问题讨论】:
【参考方案1】:怎么样:
从 ( 中选择 * 选择 t.*, max(TIMESTAMP) over (partition by id) mx 从标签 t ) 其中 mx=TIMESTAMP;
第
【讨论】:
【参考方案2】:如果没有子查询,您的查询将无法解决。
select acc,sum(bal + res) from table_name where timestamp in (通过具有 hax(timestamp) 问候。【讨论】:
以上是关于使用 Oracle 分析函数从使用 max 的列中获取数据而不是另一列的主要内容,如果未能解决你的问题,请参考以下文章
想要从 ORACLE SQL 中的 2 个单独的列中为一个团队提供平均点
如何从 SQL Server 存储过程中的 3 列中获取 MAX 值?