我正在从帐户表中提取Geo,并且我是按机会$$ Amt对Geos进行排名的,其名称为"Brinks%“。
帐户是独一无二的,每个帐户都有很多机会。我需要从帐户表中为每个Geo添加员工数量,但是由于每个Geo都有很多机会,所以我得到的数字是错误的。它似乎正被与之联系在一起的机会的数量乘以。我需要改变我的加入吗?我要添加子查询吗?我试过了,但我觉得我做得不对。我就是这么写的:
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我的结果如下所示。除了最后一栏外,一切都是正确的。

发布于 2022-04-12 20:46:46
我会用一个子查询来解决这个问题。我想那是你能找到的最好的路线。一旦你加入,你就把结果扩展到机会的粒度上。从不扩展到这个粒度,而是从子查询中检索计数会更容易:
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__chttps://dba.stackexchange.com/questions/310860
复制相似问题