PostrgreSQL クロス集計モジュールの使用方法

Postrgresql Kurosu Ji Jimojuruno Shi Yong Fang Fa



SELECT ステートメントを実行して PostgreSQL テーブルからレコードを取得すると、データは表形式で返されます。表形式は、特に値を比較する場合には、データを読み取るのに常に最適であるとは限りません。より良いアプローチは、レコードをクロス集計として返すことです。そのために、PostgreSQL はユーザーがクロス集計関数を利用してターゲット データをピボット テーブルとして表現できるようにする tablefunc を提供します。この投稿では、PostgreSQL クロス集計関数の使用方法について詳しく説明します。読む!

PostgreSQL クロス集計モジュールの使用

データの表現方法を指定する余地があると便利です。 PostgreSQL では、デフォルトの方法ではデータを表形式で取得しますが、クロス集計モジュールには別のオプションが用意されています。より良いプレゼンテーションを実現するために、PostgreSQL テーブルの「選択」列を使用してピボット テーブルを作成できます。

この驚くべき機能は、PostgreSQL バージョン 8.3 の拡張機能として提供されます。 「tablefunc」拡張機能はクロス集計機能を提供し、ピボット テーブルを結果セットとして使用できるようにします。例を挙げてみましょう。







まず、次のコマンドを使用して、3 つの列を持つ「結果」テーブルを作成します。





作成されたテーブルは空です。したがって、INSERT クエリを使用して値を追加します。この場合、次のようにいくつかのエントリを挿入します。





「select」ステートメントを実行すると、次の結果が得られます。このデフォルトのレコード取得方法では、レコードが表形式でどのように表示されるかに注目してください。列はヘッダーとして使用され、それぞれの値が行に表示されます。



前のアプローチはほとんどの場合に機能しますが、同じレコードを取得する別のオプションもあります。今回はピボットテーブルを作成したいと思います。したがって、PostgreSQL バージョン 8.3 以降に付属する「tablefunc」拡張機能を使用します。


そこで、「tablefunc」拡張機能を作成して、クエリ内で呼び出すときに有効にしましょう。次のコマンドを実行します。

存在しない場合は拡張機能を作成します。 ;

前の画像のような出力が得られると、拡張機能が正常に有効になったことがわかります。

クロス集計関数では、最初の列が教員になるようにしましょう。その下には、表にあるさまざまな学部があります。教員列の隣には、テーブルのカテゴリ列のさまざまな値を表す他の列があります。最後に、カテゴリごとに、さまざまなカテゴリを達成した生徒の数が表示されます。

このようなピボット テーブルを実現するには、次の構文を使用します。

選択する * クロス集計から ( 'SELECT列1 列2 column3 FROM table_name ORDER BY criteriaa' )

新しい名前として ( 列1のデータ型 列2のデータ型 列_n データ型 ) ;

作成したテーブルの例を使用すると、コマンドは次のようになります。

結果を見る前に、crosstab モジュール コマンドがどのように機能するかを詳しく見てみましょう。まず、SELECT ステートメントは 3 つの列を返します。最初の列は行識別子として扱われます。私たちの場合、それは「学部」列です。 2 番目の列は「カテゴリ」列で、ピボット テーブルのカテゴリを表します。最後に、3 番目の列にはカテゴリの値が含まれています。私たちの場合、それは各カテゴリーの生徒の数です。

これを理解して「Enter」キーを押すと、次のようなピボット テーブルが表示されます。

返されたピボット テーブルに基づいて、SELECT ステートメントの最初の列が最初の配列で、2 番目の列がディメンション内の 2 番目の配列である 2 次元配列のように機能することがわかります。 3 番目の列には、2 番目の配列要素の値が含まれます。

結論

PostgreSQL クロス集計は、テーブル値をピボット テーブルとして表すのに適しています。クロス集計モジュールを使用するには、SELECT ステートメントで 3 つの列を返す必要があります。この投稿では、その使用方法に関する実践的な例を共有しました。さらに、2 次元配列と同じロジックを使用するピボット テーブルを作成する際に、クロス集計モジュールがどのように機能するかについて説明しました。