För det första lagrar du all JSON på en rad, om du vill fråga data så här bör varje invånare ha sin egen rad 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"}
För det andra behöver du inte räkna de extraherade uppgifterna, du behöver bara räkna raderna för varje extraherat land. Detta kommer att göra:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
För det tredje vill du inte
GROUP BY country
Att sätta ihop allt:
SELECT JSON_EXTRACT(data, "$.F") AS country,
COUNT(*) AS num_residents
FROM kpi_data
WHERE schema_id = 39
GROUP BY country
För anständig prestanda kan du överväga att placera ett sekundärt index på det extraherade landet.. se DOCS