Chatbase 学習データ 第2章「LATERAL句」のお世話になる
前日からの続きです。横から縦へとデータ構造を変えるのに、サンプルデータを手作業でまとめたものの、実データはそうはいきません。
ただ、こんなことを考えるのは私が初!ではないはずなので、安心してChatGPTへ聞いてみると、「LATERAL」を誇らしげに提示してくれました。
サンプルのテーブルとサンプルデータの登録
CREATE TABLE example_array (
id serial PRIMARY KEY,
col1 INTEGER,
col2 INTEGER,
col3 TEXT
);
-- サンプルデータの挿入
INSERT INTO example_array (col1, col2, col3) VALUES (10, 20, 'Sample Text');
INSERT INTO example_array (col1, col2, col3) VALUES (30, 40, 'Another Text');
次に取得するSQL
SELECT id, column_name, value
FROM example_array,
LATERAL (
VALUES
('col1', col1::TEXT),
('col2', col2::TEXT),
('col3', col3)
) AS columns(column_name, value)
WHERE id = 1;
クエリ結果
id | column_name | value
----+-------------+-------------
1 | col1 | 10
1 | col2 | 20
1 | col3 | Sample Text
Ver9.3以降から用意されているようですが、大変便利です。
Group byと併用すると、さらに集約されることから、データ量も最小に従えられるのでとてもいい具合にデータを整えることができます。
ということで、早速トライ&テストでさらにデータの構造を調整中です。
うまくいけば、先日リリースしたChatabaseの学習データに使えるかな。
(自社サービス紹介)
ワーカーネットでは自動化と機能簡素化で1名1日、勤務時間問わずで利用料500円となっておりますが、シスプロ・ワーカーズプロレギュラーでは、雇用管理を含めきめ細やかな管理ができる日々紹介サービスです。