Maison >base de données >tutoriel mysql >Comment calculer la sommation de lignes distinctes dans MySQL pour les statistiques de liens ?

Comment calculer la sommation de lignes distinctes dans MySQL pour les statistiques de liens ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-04 00:07:03530parcourir

How to Calculate Distinct Row Summation in MySQL for Link Statistics?

Somme de lignes distinctes dans MySQL

Cette requête vise à calculer des statistiques sur les liens : leurs clics uniques, leurs conversions et leurs valeurs de conversion totales. La clause DISTINCT garantit que chaque ligne n'est comptée qu'une seule fois dans le groupe. Cependant, le défi réside dans la somme correcte des valeurs de conversion, car l'opération de regroupement peut compter les doublons.

La solution consiste à agréger correctement les valeurs de conversion. Étant donné que chaque ID de conversion distinct correspond exactement à un ID de lien, la somme des valeurs de conversion doit être ajustée.

La requête modifiée est la suivante :

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;

Cet ajustement garantit que la conversion les valeurs sont additionnées correctement pour chaque ligne distincte. Le résultat final fournit les statistiques souhaitées pour chaque lien.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn