>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 실행 중인 행 수를 분 단위로 계산하는 방법은 무엇입니까?

PostgreSQL에서 실행 중인 행 수를 분 단위로 계산하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-19 00:57:10363검색

How to Calculate a Running Row Count by Minute in 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.