PostgreSQL 9.0 und höher kann mithilfe der GROUP BY
-Klausel aufeinanderfolgende numerische Werte in einem bestimmten Feld aggregieren. Die folgende Abfrage zeigt, wie dies in einer Tabelle erreicht wird, die die Felder „Firma“, „Beruf“ und „Jahr“ enthält:
Schritt 1: Identifizieren Sie nicht kontinuierliche Werte
<code class="language-sql">-- 步骤一:识别非连续值 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;</code>
Diese Abfrage weist jeder Zeile eine Gruppenanzahl (group_cnt) zu, basierend darauf, ob die Jahre aufeinander folgen. Eine Zeile mit group_cnt 1 zeigt den Beginn einer neuen Gruppe an.
Schritt 2: Gruppen-ID definieren
<code class="language-sql">-- 步骤二:定义分组 ID SELECT company, profession, year, SUM(group_cnt) OVER (ORDER BY company, profession, year) AS group_nr FROM qualification WHERE group_cnt = 1;</code>
Diese Abfrage weist jeder Gruppe eine Gruppennummer (group_nr) zu. Jedes aufeinanderfolgende Jahr gehört derselben Gruppe an.
Schritt 3: Aufeinanderfolgende Jahre zusammenfassen
<code class="language-sql">-- 步骤三:聚合连续年份 SELECT company, profession, ARRAY_AGG(year) AS years FROM qualification WHERE group_cnt <> 0 GROUP BY company, profession, group_nr ORDER BY company, profession, group_nr;</code>
Diese letzte Abfrage fasst aufeinanderfolgende Jahre in einem Array zusammen und filtert nicht aufeinanderfolgende Zeilen heraus. Die Ergebnisse sind nach Unternehmen und Beruf gruppiert.
Indem Sie die oben genannten drei Schritte befolgen, können Sie kontinuierliche Werte in PostgreSQL effektiv aggregieren. Beachten Sie, dass qualification
Tabelle durch Ihren tatsächlichen Tabellennamen ersetzt werden sollte.
Das obige ist der detaillierte Inhalt vonWie gruppiert und aggregiert man aufeinanderfolgende numerische Werte in PostgreSQL mithilfe von GROUP BY?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!