ホームページ >データベース >mysql チュートリアル >「crosstab()」関数を使用してPostgreSQLでクロス集計クエリを作成する方法
PostgreSQL クロス集計クエリ: crosstab()
関数を使用してクロス集計を作成します
PostgreSQL のクロス集計クエリは、データをより読みやすい表形式に変換できます。値はカテゴリごとにグループ化され、行はさまざまな属性値を表します。クロス集計クエリは、tablefunc
モジュールの crosstab()
関数を使用して作成できます。
テストケースの改善
次の形式を考えてみましょう:
<code>Section Status Count A Active 1 A Inactive 2 B Active 4 B Inactive 5 C Inactive 7</code>
次のテーブルを返すクロス集計クエリを作成したいと考えています:
<code>Section Active Inactive A 1 2 B 4 5 C NULL 7</code>
安全フォーム
このクロス集計クエリを作成するには、crosstab()
の 2 つの引数形式を使用できます。
<code class="language-sql">SELECT * FROM crosstab( 'SELECT section, status, ct FROM tbl ORDER BY 1,2' -- 也可以只写 "ORDER BY 1" , $$VALUES ('Active'::text), ('Inactive')$$ ) AS ct ("Section" text, "Active" int, "Inactive" int);</code>
このフォームは、たとえ冗長な入力行がある場合でも、各属性が必ずその専用列に割り当てられるため、「安全」です。この例では、セクション C の値が Inactive 列に入力されますが、Active 列は NULL のままです。
冗長入力行の処理
crosstab()
の 2 つの形式は、余分な入力行を異なる方法で処理します。単一引数形式では、使用可能な値の列が左から右に埋められ、余分な値は破棄されます。 2 つの引数の形式では、各入力値が独自の専用列に割り当てられ、以前の割り当てはすべてオーバーライドされます。
高度な例
クロス集計クエリは、次のようなさまざまな高度なシナリオで使用できます。
crosstabview
PostgreSQL 9.6 では、対話型ターミナル psql に crosstabview
メタコマンドが導入されています。クロス集計クエリを実行し、結果を表形式で表示できます。
<code class="language-sql">db=> SELECT section, status, ct FROM tbl \crosstabview</code>
以上が「crosstab()」関数を使用してPostgreSQLでクロス集計クエリを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。