首页 > 数据库 > mysql教程 > 如何计算分组 SQL 查询中唯一行的列总和?

如何计算分组 SQL 查询中唯一行的列总和?

Barbara Streisand
发布: 2024-11-03 19:07:29
原创
580 人浏览过

How to Calculate the Sum of a Column for Unique Rows in a Grouped SQL Query?

MYSQL:对唯一行使用 sum()

在 SQL 查询中,sum() 函数通常用于计算跨多行的值。但是,在处理分组数据时,必须考虑重复行。在这个特定问题中,用户的目标是计算转换表中每个不同行的列 conversions.value 的总和。

提供的查询最初遇到一个问题,即 sum(conversions.value) 错误地计算了由于 GROUP BY 子句,每行的值多次。为了解决这个问题,用户必须确保只计算唯一行的总和。

解决方案在于利用笛卡尔积的概念,它结合了多个集合的元素。在本例中,这些集合是唯一的点击和转化事件。 count(DISTINCT conversions.id) 函数有效删除重复的转化行,提供唯一转化事件的计数。

要计算正确的总和,用户可以将 sum(conversions.value) 乘以不同的计数转换并将其除以总行数 (count(*))。此操作可确保仅针对与每个链接关联的唯一转化事件计算总和。

解决方案中建议的修改查询是:

<code class="sql">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;</code>
登录后复制

以上是如何计算分组 SQL 查询中唯一行的列总和?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板