我刚开始使用支持 JSON1 的 SQLite 3。
我已经创建了一个包含多个属性的数据库。这些属性之一是 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}]
或这个:
A, B, C
7215, 25493, 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));
问题是,如何确保数组中的所有对象都以相同的方式排序。所以这可能会导致问题。
有什么解决办法吗?谢谢!