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;
NULL 値の処理
このソリューションは、不正な結果やゼロ除算エラーを引き起こす可能性がある元のクエリとは異なり、NULL 値を適切に処理します。 .10 進数の保持Digits
結果で 10 進数を保持するには、クエリを次のように変更します。SELECT property_name ,round((count(value_a = value_b OR NULL) * 100.0) / count(*), 2) AS pct FROM my_obj GROUP BY 1;
結論
簡略化されたクエリまたは 10 進数を保存した変更されたクエリを使用することにより、同じ SELECT ステートメント内で SUM() からパーセンテージを効果的に計算できます。 NULL 値を適切に指定します。以上が単一の SQL SELECT ステートメント内の COUNT() からパーセンテージを効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。