mysql テーブル t があるとします。
DateTime timestamp;
int userid;
時間の経過に伴う合計ユーザー数を知りたいです。私はこれを持っています:
2012-12-04 102
2012-12-05 101
2012-12-05 102
2012-12-05 103
2012-12-07 101
2012-12-08 104
したがって、101 が初めて見られるのは 12/5、104 が初めて見られるのは 12/7 などです。だから私は、日付ごとにこれまでに見た合計ユーザーのために、これが欲しいです:
2012-12-04 1
2012-12-05 3
2012-12-07 3
2012-12-08 4
(新しいエントリがない余分な日付があってもかまいません。)
私が得ることができた最も近いものは、1 日あたりの新規ユーザー数です。
select distinct date, count(*) from
(select MIN(DATE(timestamp)) date from t group by userid order by date) t1 \
GROUP BY date;
うまくいくようです。サブクエリは各ユーザー ID の最も早いタイムスタンプを提供し、外側のクエリは日付で結合します。しかし、それをロールアップしてこれまでに見た合計を取得するにはどうすればよいでしょうか?
そうそう、MySQL クエリを調べました - find "new" users per dayですが、探しているものを実行していないようです。