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

MySQLは、現在の合計で月ごとに集計

    残念ながら、MySQLはOracleやSQLServerのような分析機能を提供していません。

    「現在の合計」を取得する1つの方法は、次のようなユーザー変数を使用することです。

      SELECT t.Date
           , t.NewUsers
           , @rt := @rt + t.NewUsers AS `Running Total`
        FROM (SELECT @rt := 0) i
        JOIN (
               SELECT DATE_FORMAT(created,'%Y%m%d') AS `Date`
                    , COUNT(item_id) as `NewUsers`
                 FROM AP_user
                WHERE YEAR(created) > 2011
                  AND user_groups = '63655'
                  AND user_active = 1
                  AND userID NOT IN $excludedUsers
                GROUP BY DATE_FORMAT(created,'%Y-%m')
                ORDER BY DATE_FORMAT(created,'%Y-%m') ASC
             ) t
    

    注:上記で使用されたようなメモリ変数の動作は、このコンテキストでは保証されません。しかし、クエリに注意すれば、SELECTステートメントで予測可能で繰り返し可能な結果を​​得ることができます。メモリ変数の動作は将来のリリースで変更される可能性があり、このアプローチは機能しなくなります。

    注:基本的にクエリを括弧で囲み、インラインビュー(MySQLが「派生テーブル」と呼ぶもの)としてエイリアスを指定しました。クエリにいくつか変更を加えました。GROUPBYは、2012年1月を2013年1月と一緒にグループ化する可能性があります。これを変更しました。 ORDERBY句も追加しました。




    1. エラー:テーブル'<table-name>'のユーザー'<userid>'@'<ip-address>'に対してコマンドが拒否されました

    2. MySQLが集計関数なしでgroupbyクエリを許可するのはなぜですか?

    3. SQLで月末日を取得する

    4. MariaDBの日付と時刻の関数に使用される言語を設定します