Ten eerste slaat u alle JSON op in één rij, als u de gegevens op deze manier wilt opvragen, moet elke bewoner zijn eigen rij van zijn/haar eigen JSON hebben:
*other_fields*, {"A": 1, "B": "Debra", "C": "Peters", "D": "[email protected]", "E": "Female", "F": "Tsagaan-Ovoo"}
*other_fields*, {"A": 2, "B": "Marc", "C": "Rasmussen", "D": "[email protected]", "E": "Male", "F": "Copenhagen"}
Ten tweede hoeft u de geëxtraheerde gegevens niet te tellen, u hoeft alleen de rijen voor elk geëxtraheerd land te tellen. Dit is voldoende:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
Ten derde wil je geen GROUP BY data
helemaal niet aangezien dit vermoedelijk uniek is per bewoner. Zo heb je voor elke rij een groep. Ik denk dat je gewoon wilt:
GROUP BY country
Alles bij elkaar:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
FROM kpi_data
WHERE schema_id = 39
GROUP BY country
Voor behoorlijke prestaties kunt u overwegen een secundaire index op het geëxtraheerde land te plaatsen. zie DOCS