首页 > 解决方案 > 如何在 SQL 中计算逗号分隔列表中的字符串项

问题描述

在我的表中,我有一个标签列,它是一个字符串列表。

["conda"]
["intel"]
["pandas", "conda"]
["api", "partner"]
["dask", "distributed computing", "conda"]

我希望能够计算每个不同字符串的数量。

IE

-------------------
 tag   | count
-------------------
conda  | 3
pandas | 1
...
-------------------

到目前为止,我一直在以困难的方式做这件事并使用它......

SELECT tags
FROM "public"."content"
WHERE concat(tags) LIKE '%{INSERT_TAG_NAME_HERE}%'

提前致谢!

标签: sqlmetabase

解决方案


我现在对这一点有了更好的理解。关于 Metabase 的注释,Metabase 使用的服务在我的情况下使用的是 Postgres。

我相信我的一些查询的问题是围绕一些空值和空值。

SELECT tag, count(*) AS cnt FROM (
    SELECT 
        content.id, content.tags, tag FROM content,
        jsonb_array_elements(
            case jsonb_typeof(content.tags::jsonb) 
                when 'array' then content.tags 
                else '[]' end
    ) j(tag)
) inn
GROUP BY tag
ORDER BY cnt DESC

希望这对将来的其他人有所帮助。


推荐阅读