Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQL中,如何在coulmn中的特殊ID之后进行聚合?_Sql_Oracle_Aggregate Functions - Fatal编程技术网

在SQL中,如何在coulmn中的特殊ID之后进行聚合?

在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

我从一个select查询中收到了这种表(只是一个简单的示例):

因此,列D在四个条目之后重复。C总是不同的,四个条目后字母会变化

现在,我想总结每一个D(全部20153,全部20154,…),并将此总和作为字母旁边的一列

像这样的东西会很棒:

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。我不完全理解你在评论中的意思。新问题应该作为问题而不是评论提出。如果您只想将总和添加到另一列,请使用
+