For det første gemmer du al JSON i én række, hvis du ønsker at forespørge dataene på denne måde, skal hver beboer have sin egen række med sin egen JSON:
*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"}
For det andet behøver du ikke at tælle de udtrukne data, du skal blot tælle rækkerne for hvert udtrukket land. Dette vil gøre:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
For det tredje ønsker du ikke at GROUP BY data
overhovedet, da dette formodentlig er unikt pr. beboer. Dette vil efterlade dig med en gruppe for hver række. Jeg tror, du bare vil:
GROUP BY country
At sætte det hele sammen:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
FROM kpi_data
WHERE schema_id = 39
GROUP BY country
For en anstændig ydeevne kan du overveje at placere et sekundært indeks på det udtrukne land.. se DOCS