该项目的目标是检查文本区域字段的总字符数,并将转换率与历史数据进行比较。简单来说:X人输入了300个字符,我想看看之前输入260到340个字符之间的人的转化率。
这是一个有效的 MySQL 查询:
SELECT
COUNT(*) AS total_count,
SUM(converted) AS total_converted,
(SUM(converted) / count(*)) * 100 AS conversion_rate, text_length
FROM my_table WHERE text_length IS NOT NULL
GROUP BY text_length div 40
这适用于较小的数字,但在某个点(如超过 400 个字符),我想将它们全部放在一起。有没有办法检查“text_length”是否超过某个值,然后只计算超过它的所有内容?
此外,如果有人对更好的整体方法有任何建议,我也很乐意尝试。 谢谢!
最佳答案
使用 UNION,你可以这样做:
(SELECT
COUNT(*) AS total_count,
SUM(converted) AS total_converted,
(SUM(converted) / count(*)) * 100 AS conversion_rate, text_length
FROM my_table
WHERE text_length <= 400
GROUP BY text_length div 40)
UNION
(SELECT
COUNT(*) AS total_count,
SUM(converted) AS total_converted,
(SUM(converted) / count(*)) * 100 AS conversion_rate, 401 AS text_length
FROM my_table
WHERE text_length > 400)
请注意,我还删除了不再需要的 WHERE text_length IS NOT NULL
。大于 400 的 text_lengths 将被分组为 text_length 401。
关于php - 使用MySQL和PHP统计一定范围内的数字的总结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9007561/