我想获得多个值的总和,对于某个列的特定值。因此,用简单的话来说,我希望值“ X”的集合与相同的列值“ Y”匹配
任何人都可以帮助解释情况或提出建议吗?
我尝试分别解决这两个问题,这很好,但是我采用的组合方法不起作用,导致错误:“ 00909. 00000-”无效的参数数目“错误。
如果将问题分成两个部分,则我所知的第一个问题是使用解决
exp(sum(ln(X)))
而第二个是由
function(X) over (partition by Y)
我的综合方法很简单:
(EXP (SUM( LOG(tbl.X) ) over (partition by tbl.Y)) )
所以是桌子
Y X
______
a 2
a 2
b 3
对于新表,期望值为Z的期望输出应为:
Y X Z
__________
a 2 4
a 2 4
b 3 3
答案 0 :(得分:3)
您希望使用LN( value )
函数而不是LOG( base, value )
函数:
Oracle查询:
SELECT t.*,
ROUND( EXP( SUM( LN( x ) ) OVER ( PARTITION BY y ) ) ) AS z
FROM table_name t
输出:
Y | X | Z :- | -: | -: a | 2 | 4 a | 2 | 4 b | 3 | 3
db <>提琴here
尽管您也可以通过指定基数来使用LOG
:
EXP( SUM( LOG( EXP(1), x ) ) OVER ( PARTITION BY y ) )