繁体   English   中英

如何在SQL查询中获取组的总和

[英]How do I get the SUM of a group in an sql query

我的查询是

SELECT * 
FROM acodes
WHERE datenumber >=  '2016-12-09'
GROUP BY campaignid, acode
LIMIT 0 , 30

结果是

sql结果

有没有一种方法可以对maxworth列进行SUM()? 我想将上面显示的所有maxworth都添加到sql查询中。 答案不是SELECT *, SUM(maxworth)因为相同的acodecampaignid有多个maxworth

不知道您在这里问什么。

SELECT
    a.MAXWORTH1,
    SUM(a.MAXWORTH) AS "MAXWORTH2"
FROM (
    SELECT 
      CAMPAIGNID, 
      SUM(maxworth) AS "MAXWORTH1"
    FROM acodes 
    WHERE datenumber ='2016-12-05' 
    GROUP BY campaignid 
) a
GROUP BY a.MAXWORTH1

引用现有查询作为内联视图。 使用现有查询,并包装括号,然后在另一个查询中使用该查询代替表名。 (内联视图将需要分配一个别名。)

例如:

SELECT SUM(v.maxworth)
  FROM (
         -- existing query goes here, between the parens
         SELECT *
         FROM acodes
         WHERE datenumber >=  '2016-12-09'
         GROUP BY campaignid, acode
         LIMIT 0 , 30
       ) v

在MySQL中,该内联视图称为派生表 查询的工作方式。...MySQL首先在嵌入式视图中运行查询,并将结果集具体化为派生表。 填充派生表后,外部查询将针对此表运行。

这将通过唯一的campaignid,acode和maxworth计算SUM()。 您提到“同一代码和campaignid有多个maxworth”,这使我认为您可能想将“ maxworth”视为唯一。

    SELECT 
      campaignid,
      acode,
      maxworth,
      SUM(maxworth) AS 'MAXWORTH1'
    FROM acodes 
    WHERE datenumber >= '2016-12-09' 
    GROUP BY campaignid, acode, maxworth

这是回答您问题的另一种尝试。

SELECT
    a.campaignid,
    a.acode,
    SUM(a.maxworth) as "SUMMAXWORTH"
FROM
    (SELECT 
        * 
    FROM acodes 
    WHERE datenumber >= '2016-12-09' 
    GROUP BY campaignid, acode 
    LIMIT 0 , 30
    ) a
GROUP BY a.campaignid, a.acodes

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM