집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 실행 중인 행 수를 분 단위로 계산하는 방법은 무엇입니까?
PostgreSQL: 쿼리 결과 행 수를 분 단위로 계산
이 문서에서는 PostgreSQL의 창 함수를 사용하여 쿼리 결과의 실행 행 수를 분 단위로 계산하는 방법을 설명합니다.
1. 분당 라인 수
다음 쿼리는 분당 행 수를 반환합니다.
<code class="language-sql">SELECT COUNT(id) AS count, EXTRACT(hour FROM "when") AS hour, EXTRACT(minute FROM "when") AS minute FROM mytable GROUP BY hour, minute;</code>
2. 분당 누적 라인수
분당 누적 행 수를 계산하려면 다음 쿼리를 사용할 수 있습니다.
<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 minute;</code>
지침:
date_trunc('minute', "when")
타임스탬프 열 'when'을 가장 가까운 분 단위로 자릅니다. COUNT(*) OVER (ORDER BY date_trunc('minute', "when"))
분당 실행되는 행 수를 계산합니다. ORDER BY
절은 집계된 행의 순서를 지정합니다. DISTINCT
은 고유한 분만 반환되도록 하는 데 사용됩니다. 이는 COUNT
집계 함수가 같은 분 동안 여러 행을 반환하기 때문입니다. 3. 활동이 없는 시간 포함
결과에 활동이 없는 시간(분)을 포함하려면 다음 쿼리를 사용할 수 있습니다.
<code class="language-sql">SELECT m.minute, COALESCE(SUM(c.minute_count) OVER (ORDER BY m.minute), 0) AS running_count FROM ( SELECT generate_series(MIN(minute), MAX(minute), INTERVAL '1 minute') AS minute FROM ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS sub ) AS m LEFT JOIN ( SELECT date_trunc('minute', "when") AS minute, COUNT(*) AS minute_count FROM mytable GROUP BY minute ) AS c ON m.minute = c.minute ORDER BY m.minute;</code>
지침:
LEFT JOIN
을 사용하여 활동이 없는 시간을 포함합니다. generate_series()
이 함수는 테이블의 최소 및 최대 분 사이의 분 범위를 생성합니다. COALESCE()
함수는 활동이 없는 분의 실행 횟수가 0이 되도록 보장합니다. 위 내용은 PostgreSQL에서 실행 중인 행 수를 분 단위로 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!