select
--将json后面的值相加
arraySum(arrayMap(x -> x.2, JSONExtractKeysAndValues(concat('{"x":',extra_tag2, '}'), 'x','Int8'))) sum,
--将json前面大于180000的后面的值相加
arraySum(arrayMap(x -> x.2, arrayFilter(f -> toInt64(f.1) > 180000, JSONExtractKeysAndValues(concat('{"x":',extra_tag2, '}'), 'x','Int64')))) m3,
extra_tag2
from table
有时候,数据库中的某个字段内容可能是json字符串
但是对json串进行计算的时候SQL就比较难写,经过多次尝试,发现了这个复杂的SQL语法可以满足需求。
执行结果如图:


本文介绍了一种复杂SQL查询方法,用于处理和计算JSON字符串中的数据。通过`JSONExtractKeysAndValues`、`arrayMap`、`arrayFilter`和`arraySum`等函数,实现了对JSON字段的筛选、转换和求和操作,特别是在数据库字段包含JSON字符串时,这种SQL语法能有效解决数据处理难题。
3103

被折叠的 条评论
为什么被折叠?



