SQL consulta de contagem de linhas por ID para seleccionando gama entre 2 mínimo de datas em diferentes colunas

votos
-1
       temp
|id|received  |changed   |
|33|2019-02-18|2019-11-18|
|33|2019-08-02|2019-09-18|
|33|2019-12-27|2019-12-18|
|18|2019-07-14|2019-10-18|
|50|2019-03-20|2019-05-26|
|50|2019-01-19|2019-06-26|

Os usuários 'temporários' tabela mostra que receberam um pedido de uma atividade. Um usuário pode fazer várias solicitações. Daí a coluna recebido tem várias datas que mostram quando os pedidos foram recebidos. A tabela mostra 'mudaram' quando o status foi alterado. Há também vários valores para ele. Necessidade de encontrar o Conde de pedidos por usuário entre a data MIN (recebido) e MIN (alterado) Data O resultado esperado deve ficar assim: - A terceira fila de ID-33 não deve ser selecionada porque a data de recebimento é depois do alterado encontro.

|id|total_requests_sent|
|33|2                  |
|18|1                  |
|50|2                  |


Tentei criar 2 CTE é para ambos os valores de data MIN e juntou-se com o original

Publicado 14/02/2020 em 00:03
fonte usuário
Em outras línguas...                            


1 respostas

votos
1

Eu posso ser realmente excesso de simplificar a sua tarefa, mas não seria algo como isso funciona?

select
  t.id, count (*) as total_requests_sent
from
  temp t
  join temp2 t2 on
    t.id = t2.id
where
  t.received between t2.min_received and t2.min_changed
group by
  t.id

Eu acredito que a saída irá corresponder ao seu exemplo no caso de uso que você listou, mas com um conjunto de dados limitado, é difícil ter certeza.

Respondeu 14/02/2020 em 02:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more