Sql 尝试对分配百分比求和

Sql 尝试对分配百分比求和,sql,Sql,我是一个SQL新手,几乎没有经过培训就被抛入了这个领域,所以非常简单的答案非常感谢!我试图查询参与者分配,但我需要将每个游戏的所有分配汇总在一起。我目前有以下情况: select external_plan, participant_tax_id, external_vehicle, sum (decimal(alloc_rate,15,2)), money_type from trc.vst_partalloc where external_plan='RF00580' an

我是一个SQL新手,几乎没有经过培训就被抛入了这个领域,所以非常简单的答案非常感谢!我试图查询参与者分配,但我需要将每个游戏的所有分配汇总在一起。我目前有以下情况:

select external_plan,
   participant_tax_id,
   external_vehicle,
sum (decimal(alloc_rate,15,2)),
   money_type
from trc.vst_partalloc
where external_plan='RF00580'
and money_type='101'
group by alloc_rate,
     external_plan,
   participant_tax_id,
   external_vehicle,
   money_type
这将返回以下示例:

EXTERNAL_PLAN   PARTICIPANT_TAX_ID  EXTERNAL_VEHICLE    Alloc_Rate    MONEY_TYPE

RF00580                  #########  DFCEX              0.03 101
RF00580                  #########  ACRNX              0.06 101
RF00580                  #########  STSVX              0.06 101
RF00580                  #########  VISGX             0.06  101
RF00580                  #########  VMVIX              0.06 101
RF00580                  #########  RERGX              0.09 101
RF00580                  #########  DODGX             0.12  101
RF00580                  #########  DRLCX              0.12 101
RF00580                  #########  ABNAK             0.20  101
RF00580                  #########  PTTRX              0.20 101

那么代表这些行中的一个参与者,分配率加起来是100,我需要的是返回一行,不显示外部车辆,而是将分配率加起来是100-这有意义吗?感谢您的帮助,提前谢谢

看起来您需要做的就是从select和group by子句中删除外部车辆。

简单的答案是通过以下方式从group中删除外部车辆和分配率:

一些评论:

1您不需要在where子句和group by子句中同时包含外部计划和货币类型。如果将它们限制为单个值,则可以使用以下查询:

select participant_tax_id,
       sum (decimal(alloc_rate,15,2))
from trc.vst_partalloc
where external_plan='RF00580' and money_type='101'
group by participant_tax_id
2假设alloc_rate是一个数字类型,则进行转换是为了输出。您应该在求和后进行转换:


很抱歉,在我提交之前,我应该证明这一点,arrghh-我的意思是,我需要所有基金ID的分配加起来等于100%。不清楚到底什么样的数据组合加起来等于100,或者如何加起来,请进一步解释:输入数据行中的分配率实际上代表什么?您是否试图报告每个结果行所代表的组的比例,以便给定外部_计划的所有结果行的总和达到100%?这是一个与供应商无关的一般问题吗?如果您试图为您的特定数据库解决此问题,请告诉我们您使用的是哪个数据库包,例如Oracle、DB2、Microsoft SQL Server、MS Access、mySQL或其他什么。如果你知道的话,这个版本可能也会有帮助。我正在使用WinSQL。对不起,我知道这很清楚。我正试图从我们的数据库中取出共同基金的参与者投资选举。现在我可以利用每个共同基金,但我需要的只是所有共同基金加起来的总和,加起来可能是100%,也可能不是100%。她说她只想要一个计划和一种货币类型吗?我们不知道她的底层数据库系统。我不知道您的主系统是什么,但在我的主系统上,分组SELECT不能显示不属于GROUP BY子句的非聚合列,因此不允许第二个查询1。@WarrenT。问题中的示例查询选择一个计划和一种货币类型。我似乎很清楚。并且,感谢您指出第二个查询中的错误。我删除了无意中留下的money_type列。是的,就是这样一个例子。但仅仅因为示例中只有一个案例,我不确定我们是否可以假设在真实文件中可能没有其他未显示的案例。为了简洁起见,一个例子经常被删减。只是说说而已-
select participant_tax_id,
       sum (decimal(alloc_rate,15,2))
from trc.vst_partalloc
where external_plan='RF00580' and money_type='101'
group by participant_tax_id
select external_plan, participant_tax_id,
       decimal(sum (alloc_rate),15,2),
       money_type
from trc.vst_partalloc
where external_plan='RF00580' and money_type='101'
group by external_plan, participant_tax_id, money_type