sql - 如何在 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}%'
提前致谢!
解决方案
我现在对这一点有了更好的理解。关于 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
希望这对将来的其他人有所帮助。
推荐阅读
- asp.net-mvc - 用户提交表单后插入的重复行 - MVC 实体框架
- r - 如何用 R 数据框中的数字替换字符值?
- css - Bootstrap 4 SCSS - 更改导航栏菜单颜色?
- c# - Visual Studio 2017 中的 Pythonnet
- wordpress - 如何在古腾堡的“文档”下添加新面板
- python - 树遍历的默认参数中未定义 Python Self
- php - 警告:fopen():文件名不能为空
- php - 声明命令以使用 PHP 显示 foreach 输出
- button - 当用户单击浏览器的前进和后退按钮时,emberJS 重置表单字段
- android - (Volley) Post 方法后如何处理返回的 JsonObject