首頁 > 資料庫 > mysql教程 > 如何計算 SQL SELECT 查詢中匹配值的百分比?

如何計算 SQL SELECT 查詢中匹配值的百分比?

Mary-Kate Olsen
發布: 2024-12-27 03:49:09
原創
800 人瀏覽過

How to Calculate the Percentage of Matching Values in a SQL SELECT Query?

在同一SELECT 查詢中透過SUM() 計算百分比

在my_obj 表中,其中存在整數字段value_a 和value_b,目標是確定value_a 等於的次數百分比value_b。

不正確的嘗試:

select sum(case when o.value_a = o.value_b then 1 else 0 end) as nb_ok,
       sum(case when o.value_a != o.value_b then 1 else 0 end) as nb_not_ok,
       compute_percent(nb_ok,nb_not_ok)
from  my_obj as o
group by o.property_name;
登入後複製

此方法失敗,因為查詢中不存在 nb_ok 欄位。

已最佳化解:

SELECT property_name
      ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct
FROM   my_obj
GROUP  BY 1;
登入後複製

解釋:

  • = 運算子優先於運算運算首先評估比較。
  • count(value_a = value_b OR NULL) 確保 NULL 值忽略。
  • (count(value_a = value_b OR NULL) * 100) 除以 count(*) 計算百分比。
  • count(*) 表示總行數,包括無效的值。

結果:

property_name | pct
--------------+----
 prop_1       | 17
 prop_2       | 43
登入後複製

小數數字的替代方案:

SELECT property_name
      ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct
FROM   my_obj
GROUP  BY 1;
登入後複製

這個變體引入小數位以保留小數位。

以上是如何計算 SQL SELECT 查詢中匹配值的百分比?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板