首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得字段的和,并避免内部联接的重复?

如何获得字段的和,并避免内部联接的重复?
EN

Database Administration用户
提问于 2022-04-12 18:54:44
回答 1查看 781关注 0票数 0

我正在从帐户表中提取Geo,并且我是按机会$$ Amt对Geos进行排名的,其名称为"Brinks%“。

帐户是独一无二的,每个帐户都有很多机会。我需要从帐户表中为每个Geo添加员工数量,但是由于每个Geo都有很多机会,所以我得到的数字是错误的。它似乎正被与之联系在一起的机会的数量乘以。我需要改变我的加入吗?我要添加子查询吗?我试过了,但我觉得我做得不对。我就是这么写的:

代码语言:javascript
复制
Select 
 
Ac.frm_GEO__c, sum(Op.Amount) Amt
,Rank () Over (Order By sum(Op.Amount) Desc) as 'Rank'
,sum(ac.NumberOfEmployees) num_empl

FROM Account Ac
Inner Join Opportunity Op on Op.AccountId=Ac.Id

Where Ac.Name like  'Brinks%' 

Group by Ac.frm_GEO__c

我的结果如下所示。除了最后一栏外,一切都是正确的。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2022-04-12 20:46:46

我会用一个子查询来解决这个问题。我想那是你能找到的最好的路线。一旦你加入,你就把结果扩展到机会的粒度上。从不扩展到这个粒度,而是从子查询中检索计数会更容易:

代码语言:javascript
复制
Select 
 
Ac.frm_GEO__c, [SummarizedOpportunity].Amt
,Rank () Over (Order By [SummarizedOpportunity].Amt Desc) as 'Rank'
,sum(ac.NumberOfEmployees) num_empl

FROM Account Ac
JOIN (SELECT [Opportunity].[AccountId], [Amt] = SUM([Opportunity].[Amount]) FROM [Opportunity] GROUP BY [Opportunity].[AccountId]) [SummarizedOpportunity]
ON [SummarizedOpportunity].[AccountId] = Ac.Id


Where Ac.Name like  'Brinks%' 

Group by Ac.frm_GEO__c
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/310860

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档