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