2017-01-27 45 views
0

我必須查找2012年每個月的每種付款類型在2012年至少使用過一次的帳戶的平均金額。我使用的表具有Transactions:account_id,購買日期,payment_type和金額 遊戲:ACCOUNT_ID,game_id和GAME_DATE根據多個變量查找平均值

到目前爲止,我有

SELECT SUM(amount) FROM Transactions 
WHERE DATE (purchase_date) BETWEEN '2012-01-01' AND '2012-12-31' 
AND account_id in (SELECT account_id FROM Games WHERE (Games.game_date) 
BETWEEN '2012-01-01' AND '2012-12-31') GROUP BY payment_type; 

我很茫然對於如何進一步待着這一點。我迄今爲止的結果只顯示一列,所以我甚至不知道哪個支付類型的金額。我如何顯示旁邊的付款類型,然後根據每月進行的交易次數對它們進行平均?

編輯

所以我

SELECT payment_type, AVG(amount) FROM Transactions 
WHERE DATE (purchase_date) BETWEEN '2012-01-01' AND '2012-12-31' 
AND account_id in (SELECT account_id FROM Games WHERE (Games.game_date) 
BETWEEN '2012-01-01' AND '2012-12-31') GROUP BY payment_type; 

這說明我走過每2012付款方式花費的平均水平,我只需要由現在每月進行排序這一點。

+0

簡單。見http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-query – Strawberry

回答

1

一旦有了payment_type總和(使用您查詢的表)

select avg(tot) from (
     SELECT payment_type, SUM(amount) as tot FROM Transactions 
     WHERE DATE (purchase_date) BETWEEN '2012-01-01' AND '2012-12-31' 
     AND account_id in (SELECT account_id FROM Games WHERE (Games.game_date) 
     BETWEEN '2012-01-01' AND '2012-12-31') GROUP BY payment_type 
    ) t 

或可能只需要

SELECT payment_type, SUM(amount), AVG(amount) 
FROM Transactions 
WHERE DATE (purchase_date) BETWEEN '2012-01-01' AND '2012-12-31' 
AND account_id in (SELECT account_id FROM Games WHERE (Games.game_date) 
     BETWEEN '2012-01-01' AND '2012-12-31') 
GROUP BY payment_type 
+0

這裏的問題是,這將880的總支出除以4(支付類型的數量)給出220.我試圖找到的是每種支付類型的平均值。 – CH99

+0

我有更新的答案..希望是有用的,否則更新你的問題添加一個適當的數據樣本和預期的結果 – scaisEdge

+0

謝謝你的幫助scaisEdge,我必須更新我的問題之前,你再次回覆,現在我很開心繼續前進,ty – CH99