在SQL中,如何在coulmn中的特殊ID之后进行聚合?
我从一个select查询中收到了这种表(只是一个简单的示例): 因此,列D在四个条目之后重复。C总是不同的,四个条目后字母会变化 现在,我想总结每一个D(全部20153,全部20154,…),并将此总和作为字母旁边的一列 像这样的东西会很棒:在SQL中,如何在coulmn中的特殊ID之后进行聚合?,sql,oracle,aggregate-functions,Sql,Oracle,Aggregate Functions,我从一个select查询中收到了这种表(只是一个简单的示例): 因此,列D在四个条目之后重复。C总是不同的,四个条目后字母会变化 现在,我想总结每一个D(全部20153,全部20154,…),并将此总和作为字母旁边的一列 像这样的东西会很棒: D C Letter Sum 20153 200 x 930 20154 300 x 1380 20161 250 x
D C Letter Sum
20153 200 x 930
20154 300 x 1380
20161 250 x 1010
20162 180 x 535
20153 500 y 930
20154 380 y 1380
20161 550 y 1010
20162 170 y 535
20153 230 z 930
20154 700 z 1380
20161 210 z 1010
20162 185 z 535
我已经试过了ROLLUP和CUBE,但没有按预期效果。
然后,我想根据求和计算C的百分比。您需要分析函数:
select d, c, letter, sum(c) over (partition by d) as d_sum
from t
order by letter;
您需要分析函数:
select d, c, letter, sum(c) over (partition by d) as d_sum
from t
order by letter;
没有id或时间戳列?不,D是日期(YYYYQ)Q=Quartal。没有id或时间戳列?不,D是日期(YYYYQ)Q=Quartal。好的,这很好。我只是看到我犯了一个错误。假设我的问题表由x,y和z组成。但也有a、b等……因此“20153”的总数为“100.000”,“20154”的总数为“200.000”,“20161”的总数为“250.000”,“20162”的总数为“150.000”。如何将这些值作为新列添加到“D”中?@victoria14。我不完全理解你在评论中的意思。新问题应该作为问题而不是评论提出。如果您只想将总和添加到另一列,请使用
+
。好的,这样就可以了。我只是看到我犯了一个错误。假设我的问题表由x,y和z组成。但也有a、b等……因此“20153”的总数为“100.000”,“20154”的总数为“200.000”,“20161”的总数为“250.000”,“20162”的总数为“150.000”。如何将这些值作为新列添加到“D”中?@victoria14。我不完全理解你在评论中的意思。新问题应该作为问题而不是评论提出。如果您只想将总和添加到另一列,请使用+
。