如何在SQL查询中获取组的SUM

时间:2016-12-05 19:09:52

标签: mysql sql group-by sum

我的查询是

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

结果

sql results

有没有办法让SUM()maxworth列?我想在sql查询中添加上面显示的所有maxworth。答案不是SELECT *, SUM(maxworth),因为同一maxworthacode有多个campaignid

4 个答案:

答案 0 :(得分:1)

不确定你在这里问的是什么。

 dx[i]=ab*(-(ina(frt,v[i],n[i],nae[i],nai[i])+inap(frt,v[i],hp[i],nae[i],nai[i])+ik(frt,v[i],n[i],ke[i],ki[i])+ipump[i]+il(v[i])+inmda(inanmda,iknmda,icanmda)+icapump)+iapp); //v

答案 1 :(得分:1)

将现有查询引用为内联视图。获取现有查询,并包装parens,然后使用它代替另一个查询中的表名。 (需要为内联视图分配别名。)

例如:

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首先在内联视图中运行查询,并将结果集具体化为派生表。填充派生表后,外部查询将针对该表运行。

答案 2 :(得分:0)

这通过唯一的campaignid,acode和maxworth计算SUM()。你提到“同一个acode和campaignid有多个maxworth”,这让我觉得你可能想要将“maxworth”视为独特的。

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

答案 3 :(得分:0)

这是另一个回答你问题的尝试。

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