>

PostgreSQL 데이터베이스를 사용하고 있는데 구성 가능한 시간 범위에 대한 통계 데이터를 제공해야하는 요구 사항이 있습니다. 테이블의 샘플 데이터를 붙여 넣었습니다.

**id   timeStamp        caseId**  
224 2017-05-30 12:47:27 4654
226 2017-05-30 1:59:46  5165
225 2017-05-30 1:53:31  4658
223 2017-05-30 2:44:45  4656
221 2017-05-30 4:05:53  4645
220 2017-05-30 6:05:12  4640

시간이 1 시간 인 경우 각 시간에 대한 카운트 레코드를 원합니다 [1,2,1,0,1,0,1] 등 ...

시작 날짜와 종료 날짜가 포함 된 12 가지 쿼리를 사용하여이를 수행 할 수 있습니다. 그러나 하나의 쿼리로 출력을 원합니다.

한 번의 쿼리로 가능합니까?


  • 답변 # 1

    쿼리하려는 시간을 생성하는 테이블 함수와 함께 외부 조인을 사용할 수 있습니다.

    이것은 테이블이 incidents 라고 가정합니다. :

    SELECT hours.h, count(i)
    FROM incidents i
       RIGHT JOIN generate_series(
                     TIMESTAMP '2017-05-30 00:00:00',
                     TIMESTAMP '2017-05-30 23:00:00',
                     INTERVAL '1 hour'
                  ) hours(h)
          ON i.timestamp >= hours.h
             AND i.timestamp < hours.h + INTERVAL '1 hour'
    GROUP BY hours.h;
    
    

    배열로 결과를 원하면 hours.h 를 생략하십시오.   SELECT 에서  검색어를 나열하고 둘러 쌉니다

    SELECT array_agg(count)
       FROM (...) q;
    
    

관련 자료

  • 이전 자바 스크립트 자체 호출 함수
  • 다음 python - Tensorflow의 정확도 값에 액세스