私は PostgreSQL 9.4 に SQL クエリを持っていますが、データをプルしているテーブルのためにより複雑ですが、要約すると次のようになります。
SELECT entry_date, user_id, <other_stuff>
FROM <tables, joins, etc>
GROUP BY entry_date, user_id
WHERE <whatever limits I want, such as limiting the date range or users>
その結果、ユーザーごとに、データがある日ごとに 1 つの行があります。一般に、このクエリは 1 か月の entry_date 期間に対して実行され、ユーザーごとにその月の 1 日あたり 1 つの行を持つという望ましい結果が得られます。
問題は、すべてのユーザーのデータが毎日あるとは限らず、このクエリはデータのある日の行のみを返すことです。
一部の行にデータ (日付とユーザー以外) がない場合でも、ユーザーごとに 1 日 1 行を返すように、このクエリを変更する方法はありますか?
で参加しようとしましたgenerate_series()
が、うまくいきませんでした。ユーザーごとではなく、欠落した日をなくすことができます。私が本当に必要としているのは、「リスト内の各ユーザーについて、一連の(user,date)
レコードを生成する」のようなものです
編集: 明確にするために、私が探している最終結果は、データベース内の各ユーザー (ユーザー テーブルのレコードとして定義) について、日付ごとに 1 つの行が必要です。したがって、where 句で 5/1/15 ~ 5/31/15 の日付範囲を指定すると、ユーザーごとに 31 行が必要になります。そのユーザーがその範囲にデータを持っていなかったり、2、3 日のデータしか持っていなかったとしてもです。日々。