首页 >数据库 >mysql教程 >如何在 MySQL 中计算不同行的 SUM()?

如何在 MySQL 中计算不同行的 SUM()?

DDD
DDD原创
2024-11-04 15:32:02425浏览

How to Calculate SUM() for Distinct Rows in MySQL?

MySQL 中不同行的 SUM()

在 MySQL 查询中使用 SUM() 聚合函数时,考虑如何使用 SUM() 至关重要对不同的行进行计数以确保计算准确。在提供的示例中,目标是对不同的转化进行计数并对它们的值求和。

在原始查询中,SUM(conversions.value) 函数由于 GROUP BY 会对每行的值进行多次计数链接.id。为了解决这个问题,我们需要只对不同的 conversions.id 求和 conversions.value。

仔细的分析表明 conversions.id 和 stats.id 都是主键。因此,我们可以假设对于每个 conversions.id,都有一个唯一的 links.id。

为了获得所需的结果,我们可以利用代表点击和转化的两组集合的笛卡尔积。可以使用 count(distinct conversions.id) 导出唯一转化次数。

转化值总和可以通过将其乘以唯一转化次数除以总计数来校正:sum(conversions.id)。 value)count(distinct conversions.id)/count()

合并此修改会产生以下修改后的结果查询:

SELECT links.id, 
   count(DISTINCT stats.id) as clicks, 
   count(DISTINCT conversions.id) as conversions, 
   sum(conversions.value)*count(DISTINCT conversions.id)/count(*) as conversion_value 
FROM links 
LEFT OUTER JOIN stats ON links.id = stats.parent_id 
LEFT OUTER JOIN conversions ON links.id = conversions.link_id 
GROUP BY links.id 
ORDER BY links.created desc;

这个优化的查询有效地消除了 conversion_value 计算中的重复行,确保不同转化的准确总和。

以上是如何在 MySQL 中计算不同行的 SUM()?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn