我有一个表,其中包含每个用户每月的值。
我需要找到的是每月用户总和的平均值。
我不能这样做:
SELECT AVG(SUM(TACMargin))
FROM report_sales_month
WHERE YEAR(date) = 2013
GROUP BY userId
我认为无论如何都不会得到我想要的东西。
如果我按用户分组,我会得到多行(显然),但我需要平均值。
答案 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)