Maison > base de données > tutoriel mysql > Comment regrouper des années consécutives pour des entreprises et des professions uniques dans PostgreSQL ?

Comment regrouper des années consécutives pour des entreprises et des professions uniques dans PostgreSQL ?

DDD
Libérer: 2025-01-09 13:36:41
original
1037 Les gens l'ont consulté

How to Group Consecutive Years for Unique Companies and Professions in PostgreSQL?

Grouper des années consécutives dans PostgreSQL 9.0

Cet article explique comment regrouper des années consécutives dans PostgreSQL 9.0 tout en obtenant des informations uniques sur l'entreprise et la profession.

Nous utiliserons une approche en plusieurs étapes pour atteindre cet objectif. Tout d'abord, nous identifions les années non consécutives à l'aide d'une sous-requête qui attribue une valeur "group_cnt" selon que l'année est la première de la séquence ou si la différence entre l'année en cours et l'année précédente est supérieure à 1.

Ensuite, nous définissons l'ID de groupe en additionnant les valeurs group_cnt ​​pour les années triées pour chaque entreprise et profession. Cela crée des groupes consécutifs pour des années non consécutives.

Enfin, nous exploitons une autre table dérivée pour regrouper les années en fonction de l'ID de groupe. Le résultat est un tableau d’années pour chaque entreprise et profession unique, avec des années consécutives regroupées.

Exemple de requête :

<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>
Copier après la connexion

Sortie :

<code> company | profession |      years
---------+------------+------------------
 Google  | Programmer | {2000}
 Google  | Sales      | {2000,2001,2002}
 Google  | Sales      | {2004}
 Mozilla | Sales      | {2002}
(4 rows)</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal