ホームページ >データベース >mysql チュートリアル >SQL で成績パーセンテージを動的に計算するにはどうすればよいですか?

SQL で成績パーセンテージを動的に計算するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-17 04:12:09959ブラウズ

How Can I Dynamically Calculate Grade Percentages in SQL?

SQL の動的パーセント計算: 効率的かつ包括的

質問:

ユーザー名とグレードを含む SQL テーブルがある場合、考えられる各グレードの出現率を計算する必要があります。課題は、これを動的に実装して、開いているテキスト フィールドからの応答を可能にすることです。

解決策:

SQL ステートメントを使用してパーセンテージを計算するには、主に 3 つの方法があります。

方法 1: 効率の最適化

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

この方法は最も効率的で、「over()」関数を使用してデータセット全体に基づいてパーセンテージを計算します。

方法 2: 普遍的な適用性

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

このメソッドは、「over()」関数をサポートしているかどうかに関係なく、どの SQL バージョンでも機能します。テーブル内の合計行数に基づいてパーセンテージが計算されます。

方法 3: 共通テーブル式 (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>

この方法は、前の 2 つよりも効率が劣りますが、より複雑な計算ではより役立つ可能性があります。 CTE を利用して評定数とパーセンテージを個別に計算します。

以上がSQL で成績パーセンテージを動的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。