繁体   English   中英

使用MySQL和PHP计算一定范围内数字的总结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM