Re: [SQL ] 从json/array中计算出各物件个数

楼主: paranoia5201 (迈向研究生)   2020-06-13 18:04:55
感谢先前这个问题,高手提供了 json_table 来作为解方,
然而现在有更进阶的问题想要来请教。
简而言之,我要取的资料是在 json 档案的第三层,
取成功的语法为以下两者(结果相同)
data->>'$.events[*].markets[*].title'
json_extract(data, '$.events[*].markets[*].title')
资料原始模样如下:
{
"round":
{
"id": "200607155540uRndtkdv56427", "bet": true, "round": 19,
"settle": true, "userId": "181210130814puid35139258",
"sportId": "sr:sport:1", "countryCode": "ng", "ticketCount": 1,
"openBetsCount": 1
},
"events": [{
"id": "200607155537uEvetkdv55698",
"markets": [{"id": "200607155537uMartkdv55699",
"type": "12",
"guide": "",
"title": "1X2",
"oddCount": 3
}]
}]
}
然而这只是节录的一部分,如果全部取出,上面语法取出的资料长相会是如下:
[
"1X2", "O/U", "O/U", "O/U", "O/U", "O/U", "O/U",
"Double Chance", "GG/NG", "Handicap", "Handicap"
]
期待的结果如下:
round_id title count(*)
200607155540uRndtkdv56427 1X2 1
200607155540uRndtkdv56427 O/U 6
200607155540uRndtkdv56427 Double Chance 1
200607155540uRndtkdv56427 GG/NG 1
200607155540uRndtkdv56427 Handicap 2
如果是原网页中的高手解法,现在的困惑是不晓得要把路径
'$.events[*].markets[*].title' 放在哪里。
无论是放在下列 '$[*]' 或 '$' 的位置都是喷出错误讯息......
SELECT j.fruit, count(*)
FROM person p
JOIN JSON_TABLE(
p.fruits,
'$[*]' columns (fruit varchar(50) path '$')
) j GROUP BY j.fruit;
https://bit.ly/3fkEBO3
再麻烦高手抽空指导,感激不尽~

Links booklink

Contact Us: admin [ a t ] ucptt.com