sql >> Databasteknik >  >> RDS >> Mysql

Mysql json datatyp count och groupby

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 GRUPPERA EFTER data alls då detta förmodligen är unikt per invånare. Detta ger dig en grupp för varje rad. Jag tror att du bara vill:

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




  1. SELECT INTO fungerar inte

  2. hur man startar Mysql i git bash i Windows 8.1

  3. Läser ett XLSX-ark för att mata en MySQL-tabell med PHPExcel

  4. Microsoft SQL Server 2005/2008:XML vs text/varchar datatyp