在SQL 中的相同SELECT 語句中透過SUM() 計算百分比
在具有整數字段value_a 和value_b 的表my_obj 的上下文中,可以計算value_a 等於value_b的行的百分比。初始查詢嘗試使用預存程序來實現此目的,但遇到了錯誤。
簡化且更有效率的解決方案
更簡單、更快的方法如下:
SELECT property_name ,(count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
此查詢:
處理NULL 值
此解決方案可以正確處理NULL值,這與原始查詢不同,原始查詢可能會導致不正確的結果或被零除錯誤.
保留小數數字
要在結果中保留小數位,請如下修改查詢:
SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
此變更將分子乘以100.0 以強制數字精度,然後使用round()指定小數位數
結論
透過使用簡化查詢或保留小數的修改查詢,可以在同一SELECT 語句中有效地從SUM() 計算百分比,處理適當的NULL 值。
以上是如何在單一 SQL SELECT 語句中透過 COUNT() 有效計算百分比?的詳細內容。更多資訊請關注PHP中文網其他相關文章!