Mysql
 sql >> Base de données >  >> RDS >> Mysql

Nombre de types de données MySQL json et groupby

Tout d'abord, vous stockez tout le JSON dans une ligne, si vous souhaitez interroger les données comme celle-ci, chaque résident doit avoir sa propre ligne de son propre 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"}

Deuxièmement, vous n'avez pas besoin de compter les données extraites, il vous suffit de compter les lignes pour chaque pays extrait. Cela fera :

SELECT JSON_EXTRACT(data, "$.F") AS country,
       COUNT(*) AS num_residents

Troisièmement, vous ne voulez pas GROUP BY data du tout car cela est vraisemblablement unique par résident. Cela vous laissera avec un groupe pour chaque ligne. Je pense que vous voulez juste :

GROUP BY country

Rassembler le tout :

  SELECT JSON_EXTRACT(data, "$.F") AS country,
         COUNT(*) AS num_residents
    FROM kpi_data
   WHERE schema_id = 39
GROUP BY country

Pour des performances décentes, vous pouvez envisager de placer un index secondaire sur le pays extrait.. voir DOCS