PostgreSQL には大量のデータがあります。しかし、SPSS のようにいくつかのピボット テーブルを作成する必要があります。たとえば、都市と州のテーブルがあります。
create table cities
(
city integer,
state integer
);
insert into cities(city,state) values (1,1);
insert into cities(city,state) values (2,2);
insert into cities(city,state) values (3,1);
insert into cities(city,state) values (4,1);
実際、このテーブルには 4 つの都市と 2 つの州があります。のようなパーセンテージでピボットテーブルをやりたい
city\state |state-1| state-2|
city1 |33% |0% |
city2 |0% |100% |
city3 |33% |0% |
city4 |33% |0% |
totalCount |3 |1 |
この特定のケースでSQLを使用する方法を理解しています。しかし、私が望むのは、ストアド関数を使用して、ある変数を別の変数と交差させることです(単に個別の値を数え、「count(*) where variable_in_column_names=1 など)」で割ります)。私は今plpythonを見ています。いくつかの質問は:
- 出力列の数とタイプに適合する形状の一時テーブルを持たないレコードのセットを出力する方法。
- 多分実用的な解決策がありますか?
ご覧のとおり、入力はテーブル名、最初の変数の列名、2 番目の変数の列名になります。関数の本体で多くのクエリを実行し(count(*)、変数内のすべての個別の値をループしてカウントするなど)、パーセンテージでテーブルを返します。
- 実際、私は1つのクエリ(約10k)に多くの行を持っていません.plpythonではなく、生のpythonでそのようなことを行う最良の方法かもしれません?