Heim >Datenbank >MySQL-Tutorial >Wie gruppiert man aufeinanderfolgende Jahre nach einzelnen Unternehmen und Berufen in PostgreSQL?
Gruppieren Sie aufeinanderfolgende Jahre in PostgreSQL 9.0
In diesem Artikel wird erläutert, wie Sie aufeinanderfolgende Jahre in PostgreSQL 9.0 gruppieren und gleichzeitig eindeutige Unternehmens- und Berufsinformationen erhalten.
Um dieses Ziel zu erreichen, werden wir einen mehrstufigen Ansatz verfolgen. Zuerst identifizieren wir nicht aufeinanderfolgende Jahre mithilfe einer Unterabfrage, die einen „group_cnt“-Wert zuweist, basierend darauf, ob das Jahr das erste in der Sequenz ist oder ob die Differenz zwischen dem aktuellen Jahr und dem vorherigen Jahr größer als 1 ist.
Als nächstes definieren wir die Gruppen-ID, indem wir die group_cnt-Werte für die sortierten Jahre für jedes Unternehmen und jeden Beruf summieren. Dadurch werden aufeinanderfolgende Gruppen für nicht aufeinanderfolgende Jahre erstellt.
Schließlich nutzen wir eine weitere abgeleitete Tabelle, um Jahre basierend auf der Gruppen-ID zu aggregieren. Das Ergebnis ist eine Reihe von Jahren für jedes einzelne Unternehmen und jeden einzelnen Beruf, wobei aufeinanderfolgende Jahre gruppiert werden.
Beispielabfrage:
<code class="language-sql">SELECT company, profession, array_agg(year) AS years FROM ( SELECT company, profession, year, SUM(group_cnt) OVER (ORDER BY company, profession, year) AS group_nr FROM ( SELECT company, profession, year, CASE WHEN ROW_NUMBER() OVER (PARTITION BY company, profession ORDER BY year) = 1 OR year - LAG(year,1,year) OVER (PARTITION BY company, profession ORDER BY year) > 1 THEN 1 ELSE 0 END AS group_cnt FROM qualification ) t1 ) t2 GROUP BY company, profession, group_nr ORDER BY company, profession, group_nr;</code>
Ausgabe:
<code> company | profession | years ---------+------------+------------------ Google | Programmer | {2000} Google | Sales | {2000,2001,2002} Google | Sales | {2004} Mozilla | Sales | {2002} (4 rows)</code>
Das obige ist der detaillierte Inhalt vonWie gruppiert man aufeinanderfolgende Jahre nach einzelnen Unternehmen und Berufen in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!