집 >데이터 베이스 >MySQL 튜토리얼 >비활성 시간(분)을 포함하여 매 분마다 PostgreSQL에서 실행 중인 행 수를 생성하는 방법은 무엇입니까?
PostgreSQL: 비활성 기간을 포함하여 분 단위로 실행 행 수 생성
이 문서에서는 몇 분 동안 활동이 없더라도 PostgreSQL 테이블에서 분당 실행 중인 행 수를 생성하는 방법을 보여줍니다.
방법 1: 활동적 시간(분)에 대해서만 계산 실행
이 접근 방식은 창 함수를 사용하여 활동이 존재하는 각 분의 실행 횟수를 계산합니다.
<code class="language-sql">SELECT DISTINCT date_trunc('minute', "when") AS minute, count(*) OVER (ORDER BY date_trunc('minute', "when")) AS running_count FROM mytable ORDER BY 1;</code>
date_trunc('minute', "when")
행을 분 단위로 그룹화합니다. count(*) OVER (ORDER BY date_trunc('minute', "when"))
기능은 분 단위로 정렬된 누계를 제공합니다.
방법 2: 비활성 시간(분) 포함
활동이 없는 분을 포함하려면 generate_series
을 사용하여 완전한 분 시퀀스를 생성하고 LEFT JOIN
을 사용하여 횟수를 통합합니다.
<code class="language-sql">WITH cte AS ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_ct FROM mytable GROUP BY 1 ) SELECT m.minute, COALESCE(sum(cte.minute_ct) OVER (ORDER BY m.minute), 0) AS running_count FROM ( SELECT generate_series(min(minute), max(minute), interval '1 min') AS minute FROM cte ) m LEFT JOIN cte USING (minute) ORDER BY 1;</code>
A CTE(cte
)는 행을 분 단위로 그룹화하고 개수를 셉니다. generate_series
은 전체 시간 범위에 걸쳐 일련의 분을 생성합니다. LEFT JOIN
는 이 계열을 cte
의 개수와 결합하고 COALESCE
는 실행 개수를 0으로 할당하여 활동이 없는 분을 처리합니다. 그런 다음 sum() OVER (ORDER BY m.minute)
는 누적 합계를 계산합니다.
위 내용은 비활성 시간(분)을 포함하여 매 분마다 PostgreSQL에서 실행 중인 행 수를 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!