sql consulta de recuento de filas por ID para mediante la selección de rango entre 2 fechas min en diferentes columnas

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|

Los usuarios de 'temp' tabla muestra que recibieron una solicitud para una actividad. Un usuario puede hacer múltiples peticiones. De ahí que la columna recibida tiene varias fechas que muestran cuando se recibió la solicitud. Los 'cambiado' muestra la tabla cuando el estado fue cambiado. También hay varios valores para la misma. Necesidad de encontrar el Número de solicitudes por usuario entre la fecha MIN (recibidas) y MIN (cambiado) Fecha El resultado esperado debería tener este aspecto: - La tercera fila de ID-33 no debe ser seleccionado debido a que la fecha de recepción es cambiado después de la fecha.

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


Intentado crear 2 CTE para ambos valores de fecha MIN y se unió con el original

Publicado el 14/02/2020 a las 00:03
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
1

Puedo ser muy sobre-simplificación de su tarea, pero no haría algo así como este trabajo?

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

Creo que la salida coincidirá con su ejemplo en el caso de uso que en la lista, pero con un conjunto de datos limitados Es difícil estar seguro.

Respondida el 14/02/2020 a las 02:28
fuente por usuario

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