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

TclとMysqlによる統計

    ここで必要なのは、少し複雑なSQLクエリです。サブクエリで構成されます。

    1つ目はこれです(フィドル )。各名前のドアを開けたアイテムの総数を取得します。

     SELECT COUNT(*) total, name FROM stats GROUP BY name
    

    次はこれです(フィドル )。ドアと名前ごとの開封数を取得します。

    SELECT COUNT(*) bydoor, name, door FROM stats GROUP BY name, door
    

    3つ目(フィドル )2番目のものを組み込み、名前ごとに1行を取得して、ドアが開いていることを示します。

    SELECT name, 
           GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
      FROM (   SELECT COUNT(*) bydoor,
                      name,
                      door
                 FROM stats
                GROUP BY name, door
            ) s
      GROUP BY name
    

    最後に、これらのサブクエリをこの形式で結び付けるには、JOINが必要です。

       SELECT t.name, t.total, d.details
         FROM ( .... the first subquery ....) t
         JOIN ( .... the second subquery .... ) d ON t.name = d.name
        ORDER BY t.total DESC, t.name
    

    すべてのスペルは次のようになります(フィドル )。あなたはそれをあなたのsqlに入れます 可変で、あなたは行ってもいいです。単なる複数行の文字列です。

    set sql {SELECT t.name, t.total, d.details
      FROM (SELECT COUNT(*) total, name FROM stats GROUP BY name) t
      JOIN (  SELECT name, 
                     GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
                FROM (   SELECT COUNT(*) bydoor,
                                name,
                                door
                           FROM stats
                          GROUP BY name, door
                     ) s
               GROUP BY name
            ) d ON t.name = d.name
      ORDER BY t.total DESC, t.name}
    

    したがって、ネストされたクエリの束で構成されるクエリがあります。

    SQLデータ分析が上手になるにつれて、ここで学ぶための秘訣がいくつかあります。

    1. GROUP BYの使用
    2. クエリのネスト。サブクエリとも呼ばれます。サブクエリは仮想テーブルと考えることができます。
    3. (高度)GROUP_CONCAT



    1. 相乗り用のデータモデルの作成

    2. 動的パーティショニング+HIVEでのCREATEAS

    3. プール内のJDBC接続を閉じる

    4. Ruby onRails4+アプリのデフォルトのデータベース分離レベルを設定する方法