在同一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;
解釋:
結果:
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中文網其他相關文章!