我有两个表 - 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
最佳答案
不要使用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
关于mysql 查询 : How can I group by only cpm. ad_id 并拥有所有 cc 的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089087/