집 >데이터 베이스 >MySQL 튜토리얼 >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 중국어 웹사이트의 기타 관련 기사를 참조하세요!