Die Berechnung einer bedingten kumulativen Summe in Oracle
Die Breite Sicht auf das, was ich versuche zu tun, ist herauszufinden, wie viele Reservierungen, die noch nicht passiert ist, noch auf die Bücher in der gesamten Anlage, indem Sie das Datum, das die Reservierung gebucht wurde. Dies bedeutet, dass das zählen der Anzahl der Datensätze, die vorhanden sind mit einem redemption_date
nach oder gleich booking_date
Gruppierung von booking_date
. Bitte sehen Sie das folgende hypothetische Beispiel für eine bessere Erklärung:
redemption_date booking_date
2013-01-01 2013-01-01
2013-01-06 2013-01-01
2013-01-06 2013-01-01
2013-01-07 2013-01-02
2013-01-08 2013-01-03
2013-01-09 2013-01-04
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-10 2013-01-05
2013-01-11 2013-01-05
Möchte ich das Ergebnis:
booking_date number_of_reservations
2013-01-01 3
2013-01-02 3
2013-01-03 4
2013-01-04 5
2013-01-05 11
Aber mein Hirn ist völlig im Stich gelassen hatte, wie die Abfrage strukturiert werden soll. Irgendwelche Tipps? Danke!
Bearbeiten:
Um zu klären, number_of_reservations sollte die Anzahl der Reservierungen gebucht an diesem Tag, sowie diejenigen, die gebucht Tage DANACH. In anderen Worten, number_of_reservations ist die Anzahl der Reservierungen in der Datenbank von booking_date (noch nicht passiert).
Meine ursprünglichen Ergebnisse haben Fehler. Sorry für die Verwirrung
Sind Sie richtig - mein Ergebnis war fehlerhaft. Danke für den Hinweis es aus, hoffentlich ist die Korrektur wird meine Frage klarer.
hast du im internet schauen?
InformationsquelleAutor the Internet | 2013-02-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sql Fiddle
Edit:
Auf der Grundlage der aktualisierten Beschreibung, ich glaube, das sollte die gewünschten Ergebnisse:
Sql Fiddle
Warum nicht eine where-Klausel verwenden? Das sollte effizienter sein.
Gute Frage... Nein, denn wenn die
CASE
Erklärung nicht übereinstimmen, gibt esNULL
, die nicht in der Zählung berücksichtigt.Vielleicht... aber das würde ausschließen, alle Buchungen mit der Anzahl 0.
oooh. lernen nicht etwas gibt.
InformationsquelleAutor Michael Fredrickson
Hierzu können Sie leicht durch Verwendung
case
mit einemsum
.Durch die Art und Weise, dies ist nicht wirklich eine kumulative Summe. Das wäre die syntax:
Es würde sich um einen berechneten Wert für jede Zeile.
InformationsquelleAutor Gordon Linoff
diese sollten Sie bekommen, was Sie suchen
InformationsquelleAutor Matt Busche
versuchen, diese (ich nehme an, Sie wollen alle von Ihnen, nicht diejenigen, die mehr als eine bestimmte Anzahl)
booking_date
vor oder gleich derredemption_date
InformationsquelleAutor Joe
Hier ist eine einfache Lösung.
InformationsquelleAutor Ram