ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。