Tabela messages
:
conv_id | ID do usuário | contente | hora_enviada |
---|---|---|---|
1 | 001 | 1st_msg | 01-01-1990 00:00:00 |
2 | 002 | 2nd_msg | 01-02-1990 00:00:00 |
Como selecionamos a primeira mensagem e a primeira resposta enviada em uma conversa ( conv_id
) todos os dias?
Notas:
- Pode haver muitos usuários.
- Um único usuário pode enviar várias mensagens.
- Este é um conjunto de dados de pessoas, e apenas duas pessoas estão conversando entre si.
- Ao longo do dia, várias mensagens são trocadas.
- A primeira mensagem pode ser definida pelo tempo mínimo de envio no dia 1 do primeiro usuário.
- A primeira resposta pode ser definida como o tempo mínimo de envio no dia 1 do segundo usuário.
Existe uma solução verdadeiramente simples com
DISTINCT ON
:db<>fique aqui
Ver:
Um salto de índice emulado pode ser mais rápido. Ver:
No caso de
timestamptz
, "dias" são definidos pela configuração de fuso horário de sua sessão atual, a menos que seja definido explicitamente. Ver: