1. ホーム
  2. sql

[解決済み] タイムスタンプを時間ではなく日毎にグループ化すること

2022-02-15 21:01:33

質問

私が運営しているウェブサービスのユーザーアクセス/ビューログを保存するテーブルがあります。これはタイムスタンプとして時間を追跡しますが、集計レポートを作成するときに、時間ではなく日だけを気にすることが分かってきました。

現在、以下のようなクエリを実行しています。

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

その他にも条件がある場合が多いですが、質問には関係ないはずです。私はPostgresを使っていますが、どのような機能が使われていても、他の言語でも機能すると思います。

私は結果を日付ごとのビュー数をカウントするPythonスクリプトに取り込みますが、データベースが私のためにグループ分けやカウントをしてくれるなら、もっと意味があると思います。

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

どのように解決するのですか?

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