首頁 >資料庫 >mysql教程 >如何用SQL動態計算成績百分比?

如何用SQL動態計算成績百分比?

Susan Sarandon
Susan Sarandon原創
2025-01-17 04:12:09987瀏覽

How Can I Dynamically Calculate Grade Percentages in SQL?

SQL動態百分比計算:高效率且全面

問題:

給定一個包含使用者名稱和成績的SQL表,需要計算每個可能成績的出現百分比。挑戰在於動態地實現這一點,允許任何開放式文字欄位的回應。

解:

使用SQL語句計算百分比主要有三種方法:

方法一:效率最佳化

<code class="language-sql">select Grade, count(*) * 100.0 / sum(count(*)) over()
from MyTable
group by Grade</code>

此方法效率最高,利用"over()"函數根據整個資料集計算百分比。

方法二:一般適用性

<code class="language-sql">select Grade, count(*) * 100.0 / (select count(*) from MyTable)
from MyTable
group by Grade;</code>

此方法適用於任何SQL版本,無論是否支援"over()"函數。它根據表中的總行數計算百分比。

方法三:公用表表達式 (CTE)

<code class="language-sql">with t(Grade, GradeCount) 
as 
( 
    select Grade, count(*) 
    from MyTable
    group by Grade
)
select Grade, GradeCount * 100.0/(select sum(GradeCount) from t)
from t;</code>

此方法效率低於前兩種,但在更複雜的計算中可能更有用。它利用CTE獨立計算成績計數和百分比。

以上是如何用SQL動態計算成績百分比?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn