sql >> Databáze >  >> RDS >> Mysql

Počet datových typů Mysql json a podle skupin

Nejprve ukládáte všechny JSON do jednoho řádku, pokud chcete dotazovat data takto, každý obyvatel by měl mít svůj vlastní řádek svého vlastního 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"}

Zadruhé nemusíte extrahovaná data počítat, stačí spočítat řádky pro každou extrahovanou zemi. To udělá:

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

Za třetí, nechcete GROUP BY data vůbec, protože to je pravděpodobně jedinečné na každého obyvatele. To vám ponechá skupinu pro každý řádek. Myslím, že jen chcete:

GROUP BY country

Dát to všechno dohromady:

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

Pro slušný výkon můžete zvážit umístění sekundárního indexu na extrahovanou zemi.. viz DOCS




  1. PostgreSQL vs. MySQL

  2. Fulltextový dotaz s jedinou uvozovkou

  3. Jak RADIANS() funguje v MariaDB

  4. Jak implementovat vztah many-to-many v PostgreSQL?