初めての投稿。例として、12 個のエントリを持つテーブルがあるとします。
+--------+------------+ | | 名前 | 日付 | +--------+------------+ | | P1 | 2011-12-01 | | | P2 | 2012-01-01 | | | P3 | 2012-02-01 | | | P4 | 2012-02-01 | | | P5 | 2012-02-01 | | | P6 | 2012-05-01 | | | P7 | 2012-04-01 | | | P8 | 2012-05-01 | | | P9 | 2012-05-01 | | | P10 | 2012-06-01 | | | P11 | 2012-06-01 | | | P12 | 2012-03-01 | +--------+------------+
テーブル内の情報を日付ごとにグループ化し、すべての ID (表示されていません) のカウントを保持し、現在の合計を作成しました。私はそのように実装しました。
(SELECT 日付、カウントとして c、run_total として (@s := @s + c) から (SELECT D1.date, Count(D1.person_id) as c, @s := 0 FROM テーブル D1 GROUP BY 月(D1.date) ORDER BY D1.date) as T1);
出力;
+------------+-------+-----------+ | | 日付 | カウント | run_total | +------------+-------+-----------+ | | 2011-12-20 | 1 | 1 | | | 2012-01-31 | 1 | 2 | | | 2012-02-20 | 3 | 5 | | | 2012-03-05 | 1 | 6 | | | 2012-04-20 | 1 | 7 | | | 2012-05-20 | 3 | 10 | | | 2012-06-01 | 2 | 12 | +------------+-------+-----------+
これまでのところ良い。これは私がそれを緩めるところです。最新の 4 つのエントリを抽出して、このようなものを取得するにはどうすればよいですか? 日付は昇順のままで、さらに重要なことに、run_total は同じままです。
-----私が達成しようとしていること-----
---------------------------------- | | 2012-03-05 | 1 | 6 | | | 2012-04-20 | 1 | 7 | | | 2012-05-20 | 3 | 10 | | | 2012-06-01 | 2 | 12 | +------------+-------+-----------+
--------------------------------------
これを解決しようとして、私はこれを作成しました。
(SELECT 日付、カウントとして c、run_total として (@s := @s + c) から (SELECT D1.date, Count(D1.person_id) as c, @s := 0 FROM テーブル D1 GROUP BY 月(D1.date) ORDER BY D1.date desc limit 4) as T1) ORDER BY 日付;
しかし、望ましい結果は得られませんでした。
+------------+-------+-----------+ | | 日付 | カウント | run_total | +------------+-------+-----------+ | | 2012-03-05 | 1 | 1 | | | 2012-04-20 | 1 | 2 | | | 2012-05-20 | 3 | 5 | | | 2012-06-01 | 2 | 7 | +------------+-------+-----------+
日付は整っていますが、run_totals はすべてめちゃくちゃです。1 は、前に示したように 6、2 -> 7、5 -> 10、および 7 -> 12 であると想定されます。
繰り返しますが、私が達成しようとしているのは次のとおりです。
---------------------------------- | | 2012-03-05 | 1 | 6 | | | 2012-04-20 | 1 | 7 | | | 2012-05-20 | 3 | 10 | | | 2012-06-01 | 2 | 12 | +------------+-------+-----------+