70

実行している Web サービスのユーザー アクセス/ビュー ログを格納するテーブルがあります。時間をタイムスタンプとして追跡しますが、集計レポートを作成すると、時間ではなくその日しか気にしないことがわかります。

現在、次のクエリを実行しています。

SELECT
    user_logs.timestamp
FROM
    user_logs
WHERE
    user_logs.timestamp >= %(timestamp_1)s
    AND user_logs.timestamp <= %(timestamp_2)s
ORDER BY
    user_logs.timestamp

多くの場合、他の where 条件がありますが、質問には関係ありません。私は Postgres を使用していますが、どの機能を使用しても他の言語で動作すると思います。

日付ごとのビュー数をカウントする Python スクリプトに結果を取り込みますが、データベースがグループ化してカウントできれば、もっと理にかなっています。

日ごとにグループ化し、時間を無視するようにするにはどうすればよいですか?

4

1 に答える 1

149
SELECT date_trunc('day', user_logs.timestamp) "day", count(*) views
FROM user_logs
WHERE user_logs.timestamp >= %(timestamp_1)s
    AND user_logs.timestamp <= %(timestamp_2)s
group by 1
ORDER BY 1
于 2013-02-08T11:01:19.253 に答える