簡體   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