在Json对象中使用JSON1和SQLite3执行聚合

在Json对象中使用JSON1和SQLite3执行聚合,sql,sqlite,sqlite-json1,Sql,Sqlite,Sqlite Json1,我刚开始使用SQLite 3和JSON1支持 我已经创建了一个包含多个属性的数据库。 其中一个属性是json对象 我要做的是在这个对象中执行聚合 正在运行以下查询: select json_extract(report, '$.some_attribute') from table1 group by var1 having date == max(date); 返回以下内容: [{"count":55,"label":"A"},{"count":99,"label":"B"}, {"coun

我刚开始使用SQLite 3和JSON1支持

我已经创建了一个包含多个属性的数据库。 其中一个属性是json对象

我要做的是在这个对象中执行聚合

正在运行以下查询:

select json_extract(report, '$.some_attribute')
from table1
group by var1
having date == max(date);
返回以下内容:

[{"count":55,"label":"A"},{"count":99,"label":"B"}, {"count":1,"label":"C"}]
[{"count":29,"label":"A"},{"count":285,"label":"B"},{"count":461,"label":"C"}]
[{"count":6642,"label":"A"},{"count":24859,"label":"B"},{"count":3031,"label":"C"}]
[{"count":489,"label":"A"},{"count":250,"label":"B"},{"count":74,"label":"C"}]
现在,我想做的是按标签键分组,例如,求和计数键

输出应如下所示:

[{"label": A, 'count': 7215},
 {"label": B, 'count': 25493},
 {"label": C, 'count': 3567}]
select sum(A) as A, sum(B) as B, sum(C) as C
from (
select json_extract(report,
                '$.some_attribute[0].count') as A,
       json_extract(report,
                '$.some_attribute[1].count') as B,
       json_extract(report,
                '$.some_attribute[0].count') as C
from table1
group by var1
having date == max(date));
或者这个:

  A,       B,     C
7215,    25493,  3567
我试着实现后一种方法,如下所示:

[{"label": A, 'count': 7215},
 {"label": B, 'count': 25493},
 {"label": C, 'count': 3567}]
select sum(A) as A, sum(B) as B, sum(C) as C
from (
select json_extract(report,
                '$.some_attribute[0].count') as A,
       json_extract(report,
                '$.some_attribute[1].count') as B,
       json_extract(report,
                '$.some_attribute[0].count') as C
from table1
group by var1
having date == max(date));
问题是,如何确保数组中的所有对象都以相同的方式排序。所以这可能会引起问题

有什么解决办法吗?谢谢

如果您“取消嵌套”从第一个
json\u extract返回的json字符串,它将变得微不足道。这在我的报告中起了作用:

WITH result as (select jsonString from jsonPlay)
select json_extract(value,'$.label') label,SUM(json_extract(value,'$.count'))
from result,json_each(jsonString) 
group by label
给出这个结果:

A| 7215 B| 25493 C| 3567