Distinct Row Summation in MySQL
This query aims to calculate statistics about links: their unique clicks, conversions, and total conversion values. The DISTINCT clause ensures that each row is counted only once within the group. However, the challenge lies in correctly summing the conversion values, as the group-by operation may count duplicates.
The solution involves correctly aggregating the conversion values. Since each distinct conversion ID corresponds to exactly one link ID, the sum of conversion values needs to be adjusted.
The modified query is as follows:
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;
This adjustment ensures that the conversion values are summed correctly for each distinct row. The final result provides the desired statistics for each link.
The above is the detailed content of How to Calculate Distinct Row Summation in MySQL for Link Statistics?. For more information, please follow other related articles on the PHP Chinese website!