gpt4 book ai didi

sql - 折叠并汇总分组内的计数

转载 作者:行者123 更新时间:2023-12-02 23:01:48 25 4
gpt4 key购买 nike

我有以下一组数据:

SalesPerson PackageHistoryID    PackageID   SalesPersonID   EnrollmentAmount    PackageType
-------------------------------------------------------------------------------------------
Jim Jones 2895 310 59019 27.15 New Member
Jim Jones 2895 310 59019 53.21 New Member
Jim Jones 2895 310 59019 42.35 New Member
Jim Jones 2916 221 59019 379.01 Renewal
Jim Jones 2932 326 59019 53.21 New Member
Jim Jones 2932 326 59019 27.15 New Member
Jim Jones 2933 326 59019 53.21 Renewal
Jim Jones 2933 326 59019 27.15 Renewal

根据该数据集,我运行以下查询:

select Salesperson, PackageType, count(*) AS Packages, sum(EnrollmentAmount) AS Enrollment
from Sales2
group by SalesPerson, PackageType
order by SalesPerson, PackageType

...我得到这些结果:

Salesperson    PackageType    Packages     Enrollment
----------------------------------------------------
Jim Jones New Member 5 203.07
Jim Jones Renewal 3 459.37

如上所示,我的最终结果几乎是完美的。唯一的问题是 Packages 列中的计数。计数应该是 2 和 2,而不是 5 和 3,因为我希望它指示每个 PackageHistoryID(而不是每个 EnrollmentAmount)的 PackageType 数量。我希望对 EnrollmentAmounts 求和,以便可以压缩记录,使 PackageHistoryID 永远不会重复。显示的第一个数据集显示了 PackageHistory 记录和 EnrollmentAmount 之间的一对多关系。我认为我的第二个查询(分组依据)会正确聚合,但您可以看到它显示了总共 8 个 PackageHistories,而实际上它应该只显示 4 个。

最终结果集应如下所示:

Salesperson    PackageType    Packages     Enrollment
----------------------------------------------------
Jim Jones New Member 2 203.07
Jim Jones Renewal 2 459.37

2和2表明结果集中实际上只有4条PackageHistory记录; 2 名是新成员(member),2 名是续会成员(member)。多个 EnrollmentAmount 记录导致记录过多,因此最终查询中计数会错误地扩展。

重要说明:尽管 SalesPerson 在显示的结果中始终相同,但这些结果有时可能会有所不同,尽管它们对于任何给定的 PackageHistory (1-1) 都是相同的。分组需要 (1) 按 SalesPerson,然后 (2) 按 PackageType,并汇总/展平每个唯一 PackageHistory 中的 EnrollmentAmount。

什么查询会给我正确的结果?

最佳答案

您应该执行 count(distinct PackageHistoryID) 而不是 count(*):

select Salesperson, PackageType, count(distinct PackageHistoryID) AS Packages,
sum(EnrollmentAmount) AS Enrollment
from Sales2
group by SalesPerson, PackageType
order by SalesPerson, PackageType

关于sql - 折叠并汇总分组内的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29421901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com