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