如何从已经计算的值中得到一个平均值


select aa.AccNumber, aa.AccName, count(ProductID) as Products
from vProducts pr
left join vAllAccounts aa with (nolock) 
on aa.AccountID = pr.AccountID
group by  aa.AccNumber, aa.AccID, aa.AccName
order by Products desc  

你好,这是我的问题。我计算了每个帐户的产品总数,但现在我需要使用前面的查询计算每个帐户的平均产品数量。请帮帮我。我从来没有这样做过。

select avg(sales.Products) from
(
    select aa.AccNumber, aa.AccName, count(ProductID) as Products
    from vProducts pr
    left join vAllAccounts aa with (nolock) 
    on aa.AccountID = pr.AccountID
    group by  aa.AccNumber, aa.AccID, aa.AccName
) sales

您可以直接获得每个帐户的平均产品数量:

select count(pr.AccountId) * 1.0 / count(distinct aa.AccNumber)
from vAllAccounts join
     vProducts pr
     on aa.AccountID = pr.AccountID;

计算产品总数并除以帐户总数。* 1.0是因为SQL Server做了整数除法。

如果所有帐户至少有一个产品,您可以进一步简化:

select count(*) * 1.0 / count(distinct pr.AccNumber)
from vProducts pr;

相关内容

最新更新