以下のように「,」区切りの文字が連結されている状態でグループ化を行うための操作を記述
CREATE TABLE nodes(tags TEXT); INSERT INTO nodes VALUES('tag1,tag2,tag3'); INSERT INTO nodes VALUES('tag1,tag3'); INSERT INTO nodes VALUES('tag1,tag3'); INSERT INTO nodes VALUES('tag1,tag4,tag5');このデータを以下のようにしたい
tag | count -------+------- tag1 | 4 tag3 | 3 tag2 | 1 tag4 | 1 tag5 | 1
このような処理はどのようにと呼ぶのか分からないがニュアンス的には
・区切り文字配列化
・パース配列化
・文字列分割結合
などか?
正式名称が知りたい・・・・
とりあえずSQLだけ記載
SELECT tag, COUNT(tag) FROM (SELECT UNNEST(STRING_TO_ARRAY(tags, ',')) FROM nodes) AS T1 GROUP BY tag ORDER BY COUNT(tag) DESC, tag;UNNESTとSTRING_TO_ARRAYを利用することで対応が可能である。
UNNESTで検索を行うといろいろ応用が出てくるので参考にしてみたい。
とりあえず自分の目的は上記で解決です。