sql >> データベース >  >> RDS >> Mysql

Mysqljsonデータ型の数とgroupby

    まず、すべての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
    

    適切なパフォーマンスを得るには、抽出された国にセカンダリインデックスを配置することを検討してください。 DOCS




    1. SQLで保持率を計算する方法は?

    2. psqlでスクリプト変数をどのように使用しますか?

    3. 地区が選択されると、PHPはデータベースからデータを入力します

    4. 今日と昨日の間の選択