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!