mysql 查询 : How can I group by only cpm. ad_id 并拥有所有 cc 的总和?

标签 mysql sql aggregate-functions

我有两个表 - cpm(ccad_idcpm)和 clicks(ccad_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/

相关文章:

mysql - 如何将🚕🎉之类的字符存储到MySQL中

mysql - 为什么使用 CASE 表达式不适用于 GROUP BY 和 HAVING 子句?

mysql - 仅将表与最近的行连接起来

sql - MYSQL 选择一年中每个月在一个月内的行数

php - 具体的mysql插入

php - 如何在php中从数据库中获取图像

c++ - SQLite C++ 'database is locked' 当多个进程以只读模式访问数据库时

scala - 使用列名数组聚合 Spark 数据框,保留名称

mysql - MySQL 中的最大 JSON 列长度

sql - 如何在 Postgres 中返回正确的本地时间