sql - 当标签是字符串数组时,如何计算 SQL 中每个标签的项目数?
问题描述
我有一个看起来像这样的表:
ItemID, Tags
ItemID 是一个字符串,Tags 是一个字符串数组。
数据库引擎是 Presto:https ://prestodb.io/docs/0.172/index.html
我必须为每个标签返回一个 ItemID 的计数,但我有点卡住了。我的第一种方法是提取标签并创建一个唯一列表,然后我希望通过一些加入魔法我能够分组然后计数。
我应该如何处理这个?我对 SQL 数组没有太多经验
我也不知道如何使用 UNNEST 创建行,然后从中创建一个表:
SELECT filter(flatten(array_agg(split(tags, ','))), x -> x != '')
FROM my_items
这将返回一组唯一标签,显然使用 UNNEST 可以将其转换为一组行,但到目前为止我还没有运气将其转换为该行。尝试过类似的东西:
SELECT UNNEST(above subquery) FROM MY_ITEMS
解决方案
我认为你想要一个unnest()
和聚合:
select t.tag, count(*)
from my_items i cross join
unnest(split(i.tags, ',')) t(tag)
group by t.tag;
推荐阅读
- jenkins - 在气流中的特定时间运行任务
- android - 如果应用程序未打开,Android 无法关闭通知
- twilio - 如何使用 twillio flex 同时拨打所有座席
- python - Xlwings 通过 xl.App 打开 excel 没有事件,可见 True
- javascript - 删除反应 js 中的事件侦听器问题
- r - 从两个不同的data.table中获取相同行的索引
- java - 泛型类型根据上下文具有不同的含义。为什么?
- ios - 安全文本字段的键盘布局从 AZERTY 更改为 QWERTY - SWIFT
- android - Android http回调和片段处理
- javascript - 我的模态不会弹出;收到非布尔属性“动作”错误的“真”