PostgreSQL クエリ内の SUM() からのパーセンテージの計算
クエリの理解
提供されたクエリは、value_a と value_b が含まれる行の割合を計算することを目的としています。 my_obj テーブル内の値は等しい。ただし、compute_percent ストアド プロシージャで参照される nb_ok 列が存在しないため、エラーが発生します。
最適化されたソリューション
この問題に対処するには、次のことを検討してください。より効率的なアプローチ:
SELECT property_name, (COUNT(value_a = value_b OR NULL) * 100) / COUNT(*) AS pct FROM my_obj GROUP BY property_name;
説明
このクエリ:
小数桁を含む
結果の小数桁を保持するには、次の変更されたクエリを使用します。
SELECT property_name, ROUND((COUNT(value_a = value_b OR NULL) * 100.0) / COUNT(*), 2) AS pct FROM my_obj GROUP BY property_name;
Thisバージョンは ROUND(...) を使用してパーセンテージを小数点第 2 位に四捨五入します。
以上がPostgreSQL で一致する行の割合を効率的に計算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。