我需要在2 天前的 24 小时窗口中找出所有注册我的 Postgresql 9.3 支持网站的用户。目前,我通过运行以下查询来做到这一点,然后手动减去差异:
select count (*) from auth_user where date_joined > now() - interval'24 hours';
select count (*) from auth_user where date_joined > now() - interval'48 hours';
我如何在同一个 SQL 查询中执行所有操作,包括减法?提前致谢!
如果我这样做select count (*) from auth_user where date_joined > (now() - interval'48 hours') - (now() - interval'24 hours');
,我会得到:
没有运算符匹配给定的名称和参数类型。您可能需要添加显式类型转换。
使用条件聚合:
该
filter
子句自 Postgres 9.4 起可用,对于旧版本,您需要使用case
语句:这个怎么样:
还有一种
BETWEEN
语法可能感觉更自然:这是描述 BETWEEN 的 PostgreSQL 文档页面。