我在 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>
结果是每个用户每天都有一行,我有数据。通常,此查询将在一个月的 entry_date 期间运行,期望的结果是每个用户在该月的每一天都有一行。
问题是每个月的每一天都可能没有每个用户的数据,并且此查询仅返回有数据的日期的行。
是否有某种方法可以修改此查询,使其每天为每个用户返回一行,即使某些行中没有数据(日期和用户除外)?
我尝试使用 a 加入generate_series()
,但这没有用 - 它可以使没有丢失的日子,但不是每个用户。我真正需要的是“对于列表中的每个用户,生成一系列(user,date)
记录”
编辑:为了澄清,我正在寻找的最终结果将是对于数据库中的每个用户 - 定义为用户表中的记录 - 我想要每个日期一行。因此,如果我在 where 子句中指定 5/1/15-5/31/15 的日期范围,我希望每个用户有 31 行,即使该用户在该范围内没有数据,或者只有几个数据天。