Preciso descobrir todos os usuários que se registraram no meu site com suporte Postgresql 9.3 na janela de 24 horas há 2 dias . Atualmente, estou fazendo isso executando as seguintes consultas e subtraindo manualmente a diferença:
select count (*) from auth_user where date_joined > now() - interval'24 hours';
select count (*) from auth_user where date_joined > now() - interval'48 hours';
Como faço tudo na mesma consulta SQL, inclusive a subtração? Desde já, obrigado!
Se eu fizer isso select count (*) from auth_user where date_joined > (now() - interval'48 hours') - (now() - interval'24 hours');
, eu recebo:
Nenhum operador corresponde ao(s) nome(s) e tipo(s) de argumento fornecidos. Pode ser necessário adicionar conversões de tipo explícito.
Use agregação condicional:
A
filter
cláusula está disponível desde o Postgres 9.4, para versões mais antigas você precisa usar umacase
declaração:Que tal agora:
Há também uma
BETWEEN
sintaxe que pode parecer mais natural:Aqui está a página de documentação do PostgreSQL onde BETWEEN é descrito.