まず、すべてのJSONを1つの行に格納します。このようにデータをクエリする場合は、各居住者が自分の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
適切なパフォーマンスを得るには、抽出された国にセカンダリインデックスを配置することを検討してください。