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

SQLの各X行の平均値を取得します

    DBMSによっては、次のように機能します。

    SELECT
       ChunkStart = Min(Id),
       ChunkEnd = Max(Id),
       Value = Avg(Value)
    FROM
       (
          SELECT
             Chunk = NTILE(5) OVER (ORDER BY Id),
             *
          FROM
             YourTable
       ) AS T
    GROUP BY
       Chunk
    ORDER BY 
       ChunkStart;
    

    これにより、要求に応じて、行数に関係なく5つのグループまたはチャンクが作成されます。

    ウィンドウ関数がない場合は、偽造できます:

    SELECT
       ChunkStart = Min(Id),
       ChunkEnd = Max(Id),
       Value = Avg(Value)
    FROM
       YourTable
    GROUP BY
       (Id - 1) / (((SELECT Count(*) FROM YourTable) + 4) / 5)
    ;
    

    ここでは、Idなどのいくつかの仮定を行いました。 1から始まり、ギャップはありません。最後のグループは、物事が均等に分割されていない場合は、大きすぎるのではなく小さすぎるようにします。また、MsSQLServerのように整数除算が行われると想定しました。



    1. WAMPはローカルネットワークにアクセスできません403禁止

    2. MySQL5.6でポリゴン内のLong/Latを検索

    3. 接続が失われた/切断されたトランザクションでのMySQLロールバック

    4. いくつかの結果SQLフィールドを共通のオブジェクトにグループ化する