2014-10-23 3 views
1

У меня есть две таблицы с именем conversions и cc_sessions.Запрос MySQL для получения SUM из объединенных таблиц

conversions имеет следующие столбцы:

session_id (int 11) 
cpa (int 11) 
revenue (int 11) 

cc_sessions имеет следующие столбцы:

call_session_id (int 11) 
agent (int 5) 

Эти две таблицы связаны session_id и call_session_id.

Вот что я пытаюсь получить из запроса:

сумма всех cpa, связанных с индивидуальной agent всякий раз, когда cpa > 0 и revenue = 0

Так по существу, если агент 17 было 20 переходов, где не было доход, но был СР 10 я должен увидеть строку:

agent sum(cpa) 
17  200 

Вот что я пытался, но это, безусловно, не работает правильно:

SELECT s.agent, SUM(c.cpa) 
FROM edu.conversions c JOIN edu.cc_sessions s ON c.session_id = s.call_session_id 
WHERE c.revenue = '0' AND c.cpa > '0' 
+0

Не можете тебе объяснить, что вы ищете? Вы хотите суммировать cpa? Вы хотите подсчитать, сколько строк имеет cpa> 0 и нет дохода? Почему ваше ожидаемое значение 200, я не могу собрать все это вместе. – AdamMc331

+0

Я сожалею, что это немного запутанно. Я хочу получить сумму всех значений CPA, связанных с отдельными агентами, когда CPA равна> 0 и доход = 0. В моем примере агент номер 17 имел 20 конверсий, где cpa = 10 для каждого и доход = 0. Итак, в этом примере агент 17 (cpa) = 200 – ajax1515

+1

Вы попробовали запрос, на который я ответил? Я думаю, это должно сработать. – AdamMc331

ответ

1

Я не могу проверить это на MySql. Вот как это будет работать в SQL:

SELECT s.agent, SUM(c.cpa) 
FROM edu.conversions c 
JOIN edu.cc_sessions s ON c.session_id = s.call_session_id 
WHERE c.revenue = '0' 
AND c.cpa > '0' 
GROUP BY s.agent 

Поскольку ваши столбцы INT «s, возможно, это работает лучше:

SELECT s.agent, SUM(c.cpa) 
FROM edu.conversions c 
JOIN edu.cc_sessions s ON c.session_id = s.call_session_id 
WHERE c.revenue = 0 
AND c.cpa > 0 
GROUP BY s.agent 
+1

Это, похоже, работает в среде разработки, но для меня это не работает ... Очевидно, что у меня есть что-то еще, не работающее правильно, но я собираюсь принять этот ответ, поскольку он работает теоретически. – ajax1515

1

Если вы хотите, чтобы подвести кое-что за агента, вам необходимо группы агентами. Ваши условия могут оставаться там, где есть статья.

Попробуйте это:

SELECT s.agent, SUM(c.cpa) 
FROM conversion c JOIN cc_sessions s ON s.call_session_id = c.session_id 
WHERE c.revenue = 0 AND c.cpa > 0 
GROUP BY s.agent; 

Вот SQL Fiddle примера.

+0

Да, этот запрос также будет работать, но он тот же, что и программист 43229, поэтому я выбрал его ответ первым. – ajax1515

+0

@ ajax1515 вы сказали, что его запрос не работает для вас. В чем проблема, с которой вы сталкиваетесь? – AdamMc331

+0

Сам запрос работает, который отвечает на мой вопрос ... Утверждение, которое я сделал, было более расстроено, так как теперь, когда у меня есть рабочий запрос, я нахожу другие проблемы в своей программе ... Если мне нужно, я задам новый вопрос по этим вопросам, но больше тестирования и отладки необходимо, прежде чем я доберусь до этого момента. Спасибо за помощь @ McAdam331 – ajax1515

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