Okay, so habe ich eine Tabelle mit einer Spalte user_id und eine submited_dtm Spalte.SQL-wie zu ähnlichen Daten abrufen
Ich möchte Instanzen finden, in denen Benutzer mehrere Datensätze innerhalb von 1 Tag eingereicht und zählen, wie oft das passiert ist.
Ich habe versucht, so etwas wie
select * from table_t t where
(select count(*) from table_t t2 where
t.user_id = t2.user_id and
t.pk!=t2.pk and
t.submitted_dtm between t2.submitted_dtm-.5 and t2.submitted_dtm+.5)>0;
Das Problem ist, dass diese Abfrage für jeden Datensatz in einem Datum Gruppe ein Ergebnis zurückgibt. Stattdessen möchte ich nur ein Ergebnis pro Datumsgruppe. Im Idealfall würde ich nur in dieser Gruppe zählen.
Das heißt, wenn ich 6 Datensätze:
user_id submitted_dtm
--------------------------
1 12/04/2017 1:15
1 12/04/2017 5:50
2 11/25/2017 2:00
2 11/25/2017 3:25
2 11/25/2017 6:05
2 10/06/2017 4:00
Ich möchte 2 Ergebnisse, eine Zählung von 2 und eine Zählung der 3.
Ist es möglich, dies in SQL zu tun?
Dies kann in einfachen SQL erfolgen. Wie schwierig es ist, hängt jedoch von zwei Dingen ab. Einer ist einfach: Was ist Ihre Oracle-Datenbankversion? Wenn Sie nicht sicher sind, führen Sie 'select * from v $ version 'aus. Nein, überprüfe das; Führen Sie die Anweisung 'select' aus, auch wenn Sie sich sicher sind. Geben Sie die vollständige Versionsnummer ein (z. B. 12.1.0.2.0 statt "12c"). Die andere Sache ist die Bedeutung Ihres Problems. Was möchten Sie zählen, wenn der Benutzer an einem Tag um 15 Uhr etwas einreicht, und dann noch einmal fünf Mal im Abstand von sechs Stunden für insgesamt sechs Einsendungen? (Fortsetzung folgt) – mathguy
Ist das ein Vorkommen? Oder wird das als "fünf" gezählt, weil es wirklich fünf Einreichungen gibt, denen innerhalb von weniger als 24 Stunden eine weitere Einreichung folgte? Oder sind es nur zwei - weil die erste Einreichung ein 24-Stunden-Fenster öffnet, sind die nächsten drei in diesem Fenster, aber die fünfte ist nicht, und es öffnet sich ein eigenes, neues Fenster? Alle drei Optionen (die sich auch bei den gleichen Eingaben sehr unterscheiden) sind für verschiedene Probleme gültig und sinnvoll. Also, bitte klären Sie. (Fortsetzung folgt) – mathguy
Bitte erläutern Sie auch, was Sie mit "innerhalb von 1 Tag" meinen.Meinst du "am selben Kalendertag", oder kann das über Tagesgrenzen hinweg gehen und bedeutet stattdessen "innerhalb von 24 Stunden, unabhängig vom Kalenderdatum"? Und wenn ja, bedeutet "innerhalb von 24 Stunden" STRENG weniger als 24 Stunden oder GENAU 24 Stunden auch "innerhalb von 24 Stunden"? – mathguy