【发布时间】:2020-03-09 05:21:42
【问题描述】:
我的 Metabase 表中有一个列,其中列条目如下所示:
{ “text_fields”: { “Weight”: “{:optional=>true, :priority=>4, :index=>false}” }, “checkbox_fields”: {}, “dropdown_fields”: { “Brand Name”: “{:optional=>false, :priority=>1, :index=>false, :options=>[“Non Branded”]}” }}
我想得到一个净计数 文本字段 复选框字段 下拉字段
在这种情况下,所需的答案将是:2(1 个文本字段 + 0 个复选框字段 + 1 个下拉字段)
【问题讨论】:
-
使用json_each function 然后只使用
count()结果由key分组/过滤 -
嗨@Abelisto,谢谢您的回答。也许我用错了这个函数,但我也希望所有其他列也存在。函数 json each 在 from 子句中工作,如下所示: Select * from json each(json) 但我的字段是大表中的一列,我也想要所有其他数据。还有其他解决方案吗?这给了我一个语法错误。
-
@IshanPurohit 您的问题缺少
create table详细信息,因此我们不知道表结构 -
@IshanPurohit 您的 JSON 无效 - 您能否使用“编辑帖子”并修复您输入的示例数据?
-
@IshanPurohit
(values(1::int, '{"a": {"x":1}, "b": {}}'::json)) select *, (select count(*) from json_each(j) where key in ('a', 'b') and not value::jsonb = '{}'::jsonb) from t;请注意转换为jsonb类型的值,因为json类型没有比较运算符。
标签: postgresql metabase