首頁 > 資料庫 > mysql教程 > 如何在單一 SQL SELECT 語句中透過 COUNT() 有效計算百分比?

如何在單一 SQL SELECT 語句中透過 COUNT() 有效計算百分比?

Barbara Streisand
發布: 2025-01-03 20:15:40
原創
341 人瀏覽過

How Can I Efficiently Calculate Percentages from a COUNT() in a Single SQL SELECT Statement?

在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;
登入後複製

此查詢:

  • 計算分子透過使用表達式count(value_a = value_b OR NULL) 計算value_a 等於 value_b 的行數來計算百分比。 OR NULL 確保在相等比較中 NULL 值被視為 FALSE。
  • 使用 count(*) 計算百分比的分母,這會計算所有行,包括具有 NULL 值的行。
  • 將分子除以分母以獲得百分比並將其分配給別名pct.

處理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中文網其他相關文章!

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