PostgreSQL 9.0에서 1년 연속 그룹
이 기사에서는 고유한 회사 및 직업 정보를 얻으면서 PostgreSQL 9.0에서 연속 연도를 그룹화하는 방법을 살펴봅니다.
우리는 이 목표를 달성하기 위해 다단계 접근 방식을 사용할 것입니다. 먼저, 연도가 시퀀스의 첫 번째인지 또는 현재 연도와 이전 연도의 차이가 1보다 큰지 여부에 따라 "group_cnt" 값을 할당하는 하위 쿼리를 사용하여 비연속 연도를 식별합니다.
다음으로 회사별, 직업별로 정렬된 연도에 대한 group_cnt 값을 합산하여 그룹 ID를 정의합니다. 이렇게 하면 연속되지 않은 연도에 대해 연속 그룹이 생성됩니다.
마지막으로 또 다른 파생 테이블을 활용하여 그룹 ID를 기준으로 연도를 집계합니다. 그 결과 각 고유 회사 및 직업에 대한 연도 배열이 연속 연도로 그룹화됩니다.
예시 쿼리:
<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>
출력:
<code> company | profession | years ---------+------------+------------------ Google | Programmer | {2000} Google | Sales | {2000,2001,2002} Google | Sales | {2004} Mozilla | Sales | {2002} (4 rows)</code>
위 내용은 PostgreSQL에서 고유한 회사 및 직업에 대해 연속 연도를 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!