Ich habe eine Postgres-DB-Tabelle, die vierteljährliches Ereignis, vierteljährliches Ereignisdatum und Kosten protokolliert. Jede Veranstaltung hat mindestens 5 Viertel der Informationen, einige Ereignisse haben 8 oder mehr Quartale.SQL-Abfrage, Zeilen basierend auf der Anzahl der Datumseinträge zurückgeben
Beispieltabelle
EventA | 2013-01-01 | 500 EventA | 2013-04-01 | 600 EventA | 2013-07-01 | 700 EventA | 2013-10-01 | 700 EventA | 2014-01-01 | 750 EventB | 2013-01-01 | 400 EventB | 2013-04-01 | 500 EventB | 2013-07-01 | 600 EventB | 2013-10-01 | 600 EventB | 2014-01-01 | 575 EventB | 2014-04-01 | 700 EventB | 2014-07-01 | 750 EventB | 2014-10-01 | 800 EventB | 2015-01-01 | 800 EventB | 2015-04-01 | 840
Ich möchte in der Lage sein, die folgenden über eine Abfrage zu tun. Wenn ein Ereignis 6 oder weniger Zeilen aufweist, geben Sie die Zeile für das erste Quartal und die letzte Zeile zurück. Wenn ein Ereignis 7 oder mehr Quartale hat, geben Sie die letzte Viertelreihe (letztes Datum) und das 6. Viertel zurück. Das heißt, wenn eine Veranstaltung 3 Jahre Information hat, 12 Quartale, würde ich gerne das 12. Quartal und das 6. Quartal sehen.
Ich weiß, wie man eine Fensterfunktion verwendet, um eine Viertelzählung nach Ereignis zurückzugeben und eine Unterabfrage zu verwenden, um die Ergebnisse basierend auf der Anzahl der Quartale eines Ereignisses zu erhalten, dh weniger als 6 oder größer als 10. Danach bin ich stecken. Ich denke, ich müsste diese Ergebnissätze nehmen und sie verbinden, um die Zeilen zurückzugeben, nach denen ich suche, aber ich weiß nicht, wie ich das machen soll.
So Beispieldaten aus obigem Beispiel wäre zurück
EventA | 2013-01-01 | 500 EventA | 2014-01-01 | 750 EventB | 2013-10-01 | 600 EventB | 2015-04-10 | 840
Vielen Dank im Voraus
Fehlende: Postgres-Version, Tabellendefinition, Abfrage, die Sie versucht haben. –