MySQL中X的总和的平均值

时间:2014-09-17 10:34:20

标签: mysql sql

我有一个表,其中包含每个用户每月的值。

我需要找到的是每月用户总和的平均值。

我不能这样做:

QUERY

SELECT AVG(SUM(TACMargin)) 
FROM report_sales_month 
WHERE YEAR(date) = 2013 
GROUP BY userId

我认为无论如何都不会得到我想要的东西。

如果我按用户分组,我会得到多行(显然),但我需要平均值。

3 个答案:

答案 0 :(得分:1)

我认为你可以用子查询做你想做的事情:

SELECT AVG(sumtc)
FROM (SELECT SUM(TACMargin) as sumtc
      FROM report_sales_month
      WHERE YEAR(date) = 2013
      GROUP BY month(date)
     ) t;

您也可以在没有子查询的情况下表达这一点:

SELECT SUM(TACMrgin) / count(distinct month(date))
FROM report_sales_month
WHERE year(date) = 2013;

答案 1 :(得分:0)

我不确定你要找的结果。它可能是您想要的查询:

SELECT AVG(M.totalTACMargin)
FROM (SELECT R.userId
          ,MONTH(R.date) AS month
          ,SUM(R.TACMargin) AS totalTACMargin
      FROM report_sales_month R
      WHERE YEAR(R.date) = 2013
      GROUP BY R.userId, MONTH(R.date)) M

子查询提供按月和按用户分组的总TACMargin列表。然后我得到所有这些结果的平均值。

希望这会对你有所帮助。

答案 2 :(得分:0)

如果您想要每月平均值,这将对您有所帮助:

SELECT month(date) , AVG(Value)
FROM report_sales_month
WHERE year(date)=2013
GROUP BY month(date)