SQL-Abfrage Anzahl Zeilen pro-ID durch Bereich zwischen 2 min Daten in verschiedenen Spalten Auswahl

stimmen
-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|

Die ‚Temp‘ Tabelle zeigt Benutzer, die eine Anforderung für eine Tätigkeit erhalten. Ein Benutzer kann mehrere Anfragen machen. Daraus ergibt sich die empfangene Spalte hat mehrere Daten zeigt, wenn die Anfragen empfangen wurde. Die ‚geändert‘ Tabelle zeigt, wenn sich der Status geändert wurde. Darüber hinaus gibt es mehrere Werte für sie. Notwendigkeit, die COUNT von Anfragen pro Benutzer zwischen dem MIN (empfing) Datum und MIN (geändert) Datum finden Das erwartete Ergebnis soll wie folgt aussehen: - Die dritte Reihe von ID- 33 sollte nicht gewählt werden, da das empfangene Datum nach dem geändert ist Datum.

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


Versuchte Erstellen 2 CTE für beide MIN Datumswerte und mit dem Original verbunden

Veröffentlicht am 13/02/2020 um 22:03
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Ich kann wirklich über-Vereinfachung Ihre Aufgabe, aber würde nicht etwas, wie diese Arbeit?

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

Ich glaube, der Ausgang Ihr Beispiel auf dem Anwendungsfall entspricht, werden Sie aufgelistet, aber mit einer begrenzten Datenmenge ist es schwer, sicher zu sein.

Beantwortet am 14/02/2020 um 00:28
quelle vom benutzer

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