[英]Count total results of a number within a certain range using MySQL and PHP
该项目的目标是检查文本区域的总字符数,并将转换率与历史数据进行比较。 简而言之: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。
怎么样
GROUP BY (text_length > 400), CAST((text_length / 40) AS INTEGER)
这将使具有401+个字符的所有内容组合成一个组,然后将400个或更少的内容按40
char分区分组。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.