在單一SQL 查詢中透過SUM() 計算百分比
在PostgreSQL 中,嘗試使用SUM 計算百分比時可能會遇到錯誤() 在同一個SQL 查詢中。當您嘗試存取尚不存在的欄位(例如範例中的 nb_ok)時,就會出現問題。
最佳化解決方案
更有效率、更準確的方法計算百分比是使用以下查詢:
SELECT property_name, (count(value_a = value_b OR NULL) * 100) / count(*) AS pct FROM my_obj GROUP BY 1;
此查詢採用以下內容步驟:
處理NULL 值
在count() 表達式中使用OR NULL 可確保不計算NULL值。如果您的表包含 NULL 值,這一點很重要,因為它可以防止不正確的結果或被零除的錯誤。
強制小數位
在結果,您可以使用 100.0 而不是100,從而避免進行數值計算截斷:
SELECT property_name, round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
避免不區分大小寫的識別碼
使用PostgreSQL 時,建議避免使用不帶引號的大小寫入混合標識符,例如valueA。相反,請使用小寫標識符以避免潛在的錯誤和混亂。
以上是如何在單一 PostgreSQL 查詢中使用 SUM() 有效計算百分比?的詳細內容。更多資訊請關注PHP中文網其他相關文章!