>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 개별 전환에 대한 정확한 전환 가치 합계를 계산하는 방법은 무엇입니까?

MySQL에서 개별 전환에 대한 정확한 전환 가치 합계를 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-04 04:20:02187검색

How to Calculate Accurate Sum of Conversion Values for Distinct Conversions in MySQL?

sum()을 사용하는 MySQL의 고유 행 집계

SQL 쿼리에는 숫자 요약을 계산하기 위해 sum()과 같은 집계 함수가 포함되는 경우가 많습니다. 그룹화된 데이터를 처리할 때 부풀려진 결과를 피하기 위해 각 고유 레코드를 한 번만 계산하는 것이 중요합니다.

다음 쿼리를 고려하세요.

<code class="sql">SELECT links.id,
       count(DISTINCT stats.id) as clicks,
       count(DISTINCT conversions.id) as conversions,
       sum(conversions.value) 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>

목표는 개별 클릭 수를 계산하는 것입니다. , 전환을 계산하고 각 링크에 해당하는 전환 가치를 합산합니다. 그러나 sum(conversions.value) 집계는 그룹화로 인해 각 전환 값을 여러 번 계산합니다.

각 고유 전환의 합계를 정확하게 계산하려면 표현식을 조정해야 합니다. Conversions.id가 전환 테이블의 기본 키라고 가정하면 고유 전환 수와 총 레코드 수 간의 관계를 활용할 수 있습니다.

각 Conversions.id에는 최대 하나의 링크가 있습니다. .id가 영향을 받았습니다. 따라서 개별 전환에 대한 모든 전환 가치의 합계는 실제 합계(conversions.value)에 개별 전환 수를 곱하고 이를 그룹의 총 레코드 수로 나누어 계산할 수 있습니다.

<code class="sql">sum(conversions.value) * count(DISTINCT conversions.id) / count(*)</code>

이 조정을 쿼리 결과에 통합:

<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>

이 수정된 쿼리는 각 고유 전환에 대한 전환 가치를 효과적으로 합산하여 그룹화된 데이터에 대한 정확한 집계 결과를 제공합니다.

위 내용은 MySQL에서 개별 전환에 대한 정확한 전환 가치 합계를 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.