2
该表的“交易”是所有具有date
,customerID
,单位成本(price
)和quantity
的交易的列表。客户每月的SQL平均值
我需要一份报告,将交易分组为几个月,并给出计数,总收入和每位客户的平均收入。
我无法搞清楚如何将group by customerID
这个select语句:
SELECT extract(month FROM date) month,
count(*) purchases,
SUM(price*quantity) income,
AVG(SUM(price*quantity)) <-- this needs to be grouped by customerID aswell as month
FROM
transactions
WHERE
date BETWEEN i2 AND i3
GROUP BY extract(month FROM date);
我能得到的最接近的是一样的东西:
SELECT extract(month FROM date) month,
count(*) purchases,
SUM(price*quantity) income,
(SELECT AVG(SUM(price*quantity))
FROM transactions
GROUP BY customerID, extract(month FROM date))
FROM
transactions t
WHERE
date BETWEEN i2 AND i3
GROUP BY extract(month FROM date);
但这种方法停止决策意识后我想了一会儿,因为嵌套的select
会返回多行。如果我添加一个where
条款,并删除在第二个group by date
选择:
(SELECT AVG(SUM(price*quantity))
FROM transactions
GROUP BY customerID
where extract(month FROM date) = month)
然后,它会返回...我不知道,但它是错误的。
这是一个oracle数据库的方式(我认为是10g)。
......我不知道为什么我没有想到这一点。谢谢。 – slicedtoad 2013-04-25 14:32:22