Първо, вие съхранявате всички JSON в един ред, ако искате да запитвате данните по този начин, всеки жител трябва да има свой собствен ред от своя собствен 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"}
Второ, не е нужно да броите извлечените данни, просто трябва да преброите редовете за всяка извлечена държава. Това ще направи:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
Трето, не искате да GROUP BY data
изобщо, тъй като това вероятно е уникално за жител. Това ще ви остави с група за всеки ред. Мисля, че просто искате:
GROUP BY country
Обединяване на всичко:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
FROM kpi_data
WHERE schema_id = 39
GROUP BY country
За прилична производителност може да помислите за поставяне на вторичен индекс на извлечената държава.. вижте DOCS