Postgresql
列出併計算列中的單詞
我有一列包含物種列表的字元串:
+----------------------------------------+ | species | +----------------------------------------+ | Dinosauria, Ornitischia, indeterminado | | Sirenia | | Dinosauria, Therophoda | | Dinosauria, Therophoda, Allosaurus | | and so on... | +----------------------------------------+
我正在尋找一種在 PostgreSQL 12 中列出和計算所有唯一名稱的方法,例如:
+---------------+-------+ | species | count | +---------------+-------+ | Dinossauria | 3 | | Ornitischia | 1 | | indeterminado | 1 | | Sirenia | 1 | | Theropoda | 2 | | Allosaurus | 1 | +-----------------------+
您可以使用該值將逗號分隔列表拆分為行
regexp_split_to_table()
並按該值分組:select s.species, count(*) from the_table t cross join regexp_split_to_table(t.species, '\s*,\s*') as s(species) group by s.species
我使用正則表達式作為分隔符來消除逗號後的空格。以上也可以使用,
unnest(string_to_array(t.species, ','))
但是您需要使用trim()
這些值來消除空格。