ホームページ >データベース >mysql チュートリアル >PostgreSQL で一致する行の割合を効率的に計算するにはどうすればよいですか?

PostgreSQL で一致する行の割合を効率的に計算するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-27 09:10:12557ブラウズ

How to Efficiently Calculate Percentages of Matching Rows in PostgreSQL?

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;

説明

このクエリ:

  • COUNT(.. .).
  • 式 (value_a = value_b OR NULL).
  • (COUNT(...) * 100) / COUNT(*) を使用して、一致する行の数を行の合計数で除算します。
  • なしでパーセンテージを計算します外部関数が必要です。
  • プロパティ名ごとに結果をグループ化し、各プロパティのパーセンテージを表示します。 group.

小数桁を含む

結果の小数桁を保持するには、次の変更されたクエリを使用します。

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 サイトの他の関連記事を参照してください。

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