SQLでkey valueのカラムが分かれているものを一つに結合する
key=valueの形にして結合したい。 例えばURLのパラメータなどがkeyとvalue`でテーブル上で分かれている場合に一つのURLにSQL上で結合するの形にして結合したい。 例えばURLのパラメータなどがkeyとvalue`でテーブル上で分かれている場合に一つのURLにSQL上で結合する
| id | key | value |
|---|---|---|
| 1 | source | social |
| 1 | medium | |
| 1 | campaign | story |
このようなテーブルを以下のような形に修正する
| id | tags |
|---|---|
| 1 | source=social&medium=instagram&campaign=story |
手順
1. keyとsourceをkey=sourceの形に変換する
with table as (
select id, concat(key, '=', value) as data from raw
)
以下のようなテーブルができる
| id | data |
|---|---|
| 1 | source=social |
| 1 | medium=instagram |
| 1 | campaign=story |
2. key=sourceを&で結合する
select id, string_agg(data, '&') from table group by id
以下のようなテーブルができる
| id | tags |
|---|---|
| 1 | source=social&medium=instagram&campaign=story |
※ concatは文字列結合
※ string_aggはカラムの結合
関連ページ
プログラミング言語
プログラミング言語・クエリ言語・記法等に関するノートをリンク MOC 📒関連 - Javascript - Typescript - Python - Dart - SQL - Processing - HTML - mermaid - ...
Supabase
SQLが利用できるOSSのFirebaseオルタナティブツール Supabase \| The Open Source Firebase Alternative MOC 関連 - Tips -
SQL
関連 - Tips - SQLで期間ごとにグループ化する - SQLでN日前を計算する - SQLで累計や割合をテーブルの値として出す - SQLで一番古い or 新しい日付を特定する - SQLでkey valueのカラムが分かれているも...
SQLで0徐算を回避する
SQLで0徐算を回避する方法。 N / 0のように0で割ろうとするとエラーが発生しクエリ実行ができない IFNULL関数を使って、特定の値のときはNullになるようにする。 `sql select conversions / ifnull(
SQLでテーブルを縦持ちから横持ちに変更する
SQLで縦に並んでるデータを横に並べる。 縦持ちのテーブル | owner_id | key | value | | -------- | ------ | ----- | | 1 | height | 160 | | 1 | weight...
Hasura + Postgresqlでtextをuuidに変更するマイグレーションを実行
Hasura + postgreSQLの構成でtextをuuidに変更するマイグレーションを行いたい。 まずはマイグレーションファイルを生成する。 `shell hasura migrate create text_to_uuid ` ha...