POSTGRES Group BY中的聚合函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了POSTGRES Group BY中的聚合函数相关的知识,希望对你有一定的参考价值。

我有以下Postgres代码,我想分组BY "Personal CC"但由于显而易见的原因我不能为聚合字段这样做。

如果我不放Group BY然后我得到"Number of Assistant Supervisors in Same Month" Personal CC这是错误的。

请帮我说明如何计算金额。是的,我做了一些研究,并且知道我们可以使用INNER JOIN,但我失败了。

  1. 期望的结果应该是降序中的个人CC总和
  2. 总和应仅适用于我在下面给出的月份和年份,但它需要全年的价值观,这是错误的
  3. 我只需要在Group中包含个人CC的总和,如果没有,请给我们一个解决方案,如何通过不将它包含在Group BY中来获得总和
  4. 我没有阅读文档,但我一直在研究它

对于每个赞助商,我有各个国家的每月cc。个人CC值。每个月。我想总结它们以获得一个独特的总结值

 SELECT 
        extended_downline."Sponsor FBO ID"
        ,extended_downline."Sponsor Name"
        ,mcc.processing_month__c AS "Processing Month"
        ,mcc.processing_year__c AS "Processing Year"

        ,sum(mcc.personal_cc_mtd__c) AS "Personal CC"
        ,sum("Same Month") as "Number of Assistant Supervisors in Same Month"
        ,bool_or(mcc.current_month_active__c) AS "Current Month Active"

    FROM extended_downline
    LEFT OUTER JOIN connect.monthly_cc__c mcc ON mcc.distributor__c = extended_downline.sponsor_distributor__c
        AND mcc.op_company__c = extended_downline."Operating Company"
        AND (
            (
                mcc.processing_year__c = '2017'
                AND mcc.processing_month__c = 10
                )
            )
    WHERE extended_downline."Same Month" <> 0
        AND extended_downline."Generation" <> 0
        AND mcc.personal_cc_mtd__c IS NOT NULL
    GROUP BY
        extended_downline."Sponsor FBO ID"
        ,extended_downline."Sponsor Name"    
        ,mcc.processing_year__c
        ,mcc.processing_month__c
        ,mcc.personal_cc_mtd__c
        ,extended_downline."Same Month"

    ORDER BY "Personal CC" DESC LIMIT 20
答案

你可以使用Order By ColumnPosition

例如:

Order By 4 desc

以上是关于POSTGRES Group BY中的聚合函数的主要内容,如果未能解决你的问题,请参考以下文章

聚合函数 和 group by

SQL中只要用到聚合函数就一定要用到group by 吗?

聚合函数和GROUP BY的问题

group by 列 聚合函数 where having

group by 列 聚合函数 where having

选择列表中的无效表达式(不包含在聚合函数或 GROUP BY 子句中)