MySQL запрос: Как я могу сгруппировать только cpm.ad_id и с суммой всех cc? - PullRequest
0 голосов
/ 22 мая 2011

У меня есть две таблицы - cpm (cc, ad_id и cpm) и clicks (cc и ad_id).

Когда я запускаю:

   SELECT cpm.ad_id, 
          COUNT(clicks.id) * cpm.cpm AS clicks_income     
     FROM cpm 
LEFT JOIN clicks on clicks.ad_id = cpm.ad_id and clicks.cc = cpm.cc
 GROUP BY cpm.ad_id, cpm.cc

Я получаю:

ad_id | clicks_income
---------------------
1     | 271.00
1     | 2.60
2     | 238.00

Теперь я хочу получить следующий результат:

ad_id | clicks_income
---------------------
1     | 273.60
2     | 238.00

Как я могусгруппировать только по cpm. ad_id и с суммой всех cc?

Когда я удаляю cpm. cc, я получаю:

ad_id | clicks_income
---------------------
1     | 273.00
2     | 238.00

Ответы [ 2 ]

1 голос
/ 22 мая 2011

Не используйте COUNT(whatever) * acolumn, используйте SUM(AColumn).
Также LEFT JOIN здесь не имеет смысла, потому что несоответствие просто добавит NULL к сумме, что не очень полезно.

SELECT cpm.ad_id, SUM(cpm.cpm) AS clicks_income 
FROM cpm INNER JOIN clicks ON clicks.ad_id = cpm.ad_id AND clicks.cc = cpm.cc
GROUP BY cpm.ad_id
0 голосов
/ 22 мая 2011
SELECT cpm.ad_id, COUNT(clicks.id)*cpm.cpm AS clicks_income 
FROM cpm LEFT JOIN clicks ON clicks.ad_id = cpm.ad_id AND clicks.cc = cpm.cc
GROUP BY cpm.ad_id
...