2017-01-27 2 views
0

Мне нужно найти среднюю сумму, потраченную на счета, которые использовались хотя бы один раз в 2012 году для каждого типа платежа в каждом месяце 2012 года. В таблицах, которые я использую, есть транзакции: 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; 

Я в недоумении относительно того, как двигаться дальше в этом. Результаты, которые у меня есть, пока показывают только один столбец, поэтому я даже не знаю, какая сумма для какого типа оплаты. Как я могу показать типы платежей рядом с ними, а затем усреднить их по количеству транзакций, совершенных в месяц?

EDIT

Так что я

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

Simple. См. 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. Я должен был обновить свой вопрос перед тем, как вы ответили еще раз. продвигайтесь вперед, – CH99

Смежные вопросы