Mysql
 sql >> база данни >  >> RDS >> Mysql

Брой тип данни на Mysql json и groupby

Първо, вие съхранявате всички JSON в един ред, ако искате да запитвате данните по този начин, всеки жител трябва да има свой собствен ред от своя собствен 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

За прилична производителност може да помислите за поставяне на вторичен индекс на извлечената държава.. вижте DOCS




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мигриране на база данни на Oracle към MySQL на AWS, част 2

  2. com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:в mysql

  3. Java - MySQL в Hive Import, където MySQL работи на Windows и Hive работи на Cent OS (Horton Sandbox)

  4. MySql инструкция за вмъкване в двоичен тип данни?

  5. Импортиране на групови CSV данни в UTF-8 в MySQL