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