Re: [SQL ] 從json/array中計算出各物件個數
看板Database (資料庫)作者paranoia5201 (社會黑暗、行路難)時間4年前 (2020/06/13 18:04)推噓0(0推 0噓 0→)留言0則, 0人參與討論串2/2 (看更多)
感謝先前這個問題,高手提供了 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
再麻煩高手抽空指導,感激不盡~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.167.134.52 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Database/M.1592042698.A.4F1.html
※ 編輯: paranoia5201 (1.167.134.52 臺灣), 06/13/2020 18:05:57
※ 編輯: paranoia5201 (1.167.134.52 臺灣), 06/13/2020 18:06:12
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Database 近期熱門文章
PTT數位生活區 即時熱門文章