【问题标题】:How to fix Aggregation in Group By, missing aggregation values如何修复 Group By 中的聚合,缺少聚合值
【发布时间】:2019-12-10 18:07:12
【问题描述】:

我有一张销售信息表,并且对按客户分组以及返回几列的总和、计数、最大值感兴趣。请有任何想法。

我检查了 Group By 语句中包含的所有 Select 列,返回的不是分组和聚合值的详细信息。
我尝试了一些明确的命名,但没有帮助。

SELECT
    customerID AS CUST,
    COUNT([InvoiceID]) AS Count_Invoice,
    SUM([Income]) AS Total_Income,
    SUM([inc2015]) AS Tot_2015_Income,
    SUM([inc2016]) AS Tot_2016_Income,
    MAX([prodA]) AS prod_A,
FROM [table_a] 
GROUP BY
    customerID, InvoiceID,Income,inc2015, inc2016, prodA

CUST 有多行,即 CUST 1、2 等应该有一行......它应该这样说......

    ---------------------------------------------
    CUST    Count_Invoice   Total_Income    Tot_2015_Income Tot_2016_Income prod_A

       1    2   600 300 300 2


    BUT IT IS RETURNING THIS
    ======================================
    CUST    Count_Invoice   Total_Income    Tot_2015_Income Tot_2016_Income prod_A

       1    1   300 300 0   1

       1    1   300 0   300 1

       2    1   300 0   300 1

       2    1   500 0   500 0

       3    2   800 0   800 0

       3    1   300 0   300 1

【问题讨论】:

    标签: sql-server group-by grouping aggregation


    【解决方案1】:

    根据您预期输出的描述,您应该仅按客户进行汇总:

    SELECT
        customerID A CUST,
        COUNT([InvoiceID]) AS Count_Invoice,
        SUM([Income]) AS Total_Income,
        SUM([inc2015]) AS Tot_2015_Income,
        SUM([inc2016]) AS Tot_2016_Income,
        MAX([prodA]) AS prod_A
    FROM [table_a] 
    GROUP BY  
        customerID;
    

    【讨论】:

    • 谢谢,我误解了需要镜像groupby/select items
    【解决方案2】:

    您不需要group by 其他列,因为它们已经由countminmaxsum 聚合。

    所以你可以试试这个

    SELECT customerID as CUST
    ,count([InvoiceID]) as Count_Invoice
     ,sum([Income]) as Total_Income
    ,sum([inc2015]) as Tot_2015_Income
     ,sum([inc2016]) as Tot_2016_Income
    ,max([prodA])  as prod_A    --- here you are taking Max but in output it seems like sum
     FROM [table_a] 
     Group By customerID
    

    注意:对于列prod_A,您使用的是max,它给出了1,但结果显示2,实际上是sumcount。请检查。

    有关更多信息,您可以找到Group by 的链接。

    【讨论】:

      猜你喜欢
      • 2014-11-22
      • 2014-12-27
      • 2020-04-09
      • 2014-08-24
      • 1970-01-01
      • 2016-04-29
      • 2011-12-22
      • 2016-09-27
      • 1970-01-01
      相关资源
      最近更新 更多