0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

初めに

Qiita Engineer Festa 2024に参加中。完走目指してます。
他のメタコマンドについては以下から読んでください。

\crosstabviewとは

問い合わせのバッファを実行し(\gと同様)、その結果をクロス表形式で表示します。 問い合わせは少なくとも3つの列を返す必要があります。 colVで特定される出力列が縦方向のヘッダになり、colHで特定される出力列が横方向のヘッダになります。 colDは表内に表示される出力列を特定します。 オプションの*sortcolH*で水平方向のヘッダをソートする列を指定できます。

それぞれの列の指定は、列番号(1から始まります)でも列名でも可能です。 列名については、通常のSQLの大文字小文字変換および引用の規則が適用されます。 省略した場合、colVは列1、colHは列2となります。 colHcolVとは異なるものでなければなりません。 colDを指定しない場合、問い合わせの結果にはちょうど3つの列がなければならず、colVでもcolHでもない列がcolDとなります。

縦方向のヘッダは一番左の列に表示され、colVの列にある値が問い合わせ結果と同じ順序で現れますが、重複するものは除かれます。

横方向のヘッダは1行目に表示され、colHの列にある値が現れますが、重複するものは除かれます。 デフォルトでは、これらは問い合わせの結果と同じ順序で表示されます。 しかしオプションのsortcolH引数が指定された場合は、colHの値は対応するsortcolHの値に従ってソートされて横方向のヘッダに現れますが、sortcolHの列の値は整数値でなければなりません。

クロス表の内側では、colHのそれぞれの個別値xcolVのそれぞれの個別値yに対して、その交点(x,y)に位置するセルに、問い合わせの結果のcolHの値がxcolVの値がyである行のcolD列の値が現れます。 そのような行がなければ、セルは空欄になります。 そのような行が複数あると、エラーが報告されます。

\crosstabviewについて

試してみた

まずはデータの用意

CREATE TABLE sales (
    region TEXT,
    product TEXT,
    sales_amount INTEGER
);
INSERT INTO sales (region, product, sales_amount) VALUES
('North', 'Product A', 100),
('North', 'Product B', 150),
('South', 'Product A', 200),
('South', 'Product B', 250);

まずは普通にSELECT

postgres=# SELECT region, product, sales_amount FROM sales ORDER BY 1,2;
 region |  product  | sales_amount 
--------+-----------+--------------
 North  | Product A |          100
 North  | Product B |          150
 South  | Product A |          200
 South  | Product B |          250
(4 rows)

\crosstabviewを使ってみる

postgres=# \crosstabview region product
 region | Product A | Product B 
--------+-----------+-----------
 North  |       100 |       150
 South  |       200 |       250
(2 rows)

まとめ

クロス表形式と聞いて難しい印象でしたが、使ってみると実務にも活かせそう。
すぐには思いつきませんが。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?