ユーザーが作成したタグを追跡するテーブルがあります。この質問の重要な列は、user_id (誰がタグを作成したか) と created_at だと思います。
いくつかの検索で、date_trunc を使用して created_at を 1 日だけに変換し、それによってグループ化できるようにする方法を見つけました。
ただし、これを取得して 1 日の合計タグ数を取得することしかできません。私がやりたいのは、ユーザーと日の両方でグループ化することです。これにより、各ユーザーが毎日作成したタグの数を確認でき、順序付けを行うことで、ユーザーが 1 日に作成したタグの最大数を把握できます。
私はpostgres 9.1.6を使用しています。
何か助けはありますか?前もって感謝します。
編集:私が始めたのは、主に暗闇の中でのショットです:
select user_id,
date_trunc('day', created_at) as "Day",
count(*) as "numtags"
from tags
group by user_id, created_at
order by numtags desc;
結果は次のとおりです。
user_id | Day | numtags
---------+---------------------+---------
1 | 2012-01-08 00:00:00 | 5719
1 | 2012-01-31 00:00:00 | 3239
1 | 2011-12-01 00:00:00 | 1868
1 | 2011-12-01 00:00:00 | 1772
1 | 2011-12-01 00:00:00 | 1756
したがって、グループ化が意図したとおりに機能していないことは明らかです。ユーザー ID はすべて同じです (手動で確認したところ、そうであってはなりません)。
次のようなものを見たいと思います(上記の数字は一致しません。単なる例です):
user_id | Day | numtags
---------+---------------------+---------
1 | 2012-01-08 00:00:00 | 100
4 | 2012-01-31 00:00:00 | 90
1 | 2011-12-12 00:00:00 | 80
2 | 2011-12-12 00:00:00 | 77
2 | 2011-12-13 00:00:00 | 76
つまり、同じユーザーが何度も表示され、同じ日付が何度も表示されます。実際、ユーザーが 1 日に少なくとも 1 つのタグを作成している限り、すべての user_id/Day の組み合わせが (それぞれ 1 回) 表示され、numtags はその方法を示します。その日はそのユーザーによって多くのタグが作成されました。