총 기간을 특정 일 간격으로 조회 쿼리

최지영·2024년 5월 15일
0

총 기간을 특정 일 간격으로

기간 데이터가 있는 경우 총 기간을 원하는 일별로 나누어 조회하는 경우가 종종있어 정리

  • 쿼리
SELECT
    CONCAT(MIN(mos_int_date), ' - ', MAX(mos_int_date)) AS date_range,
    avg(mos_int_water) AS sum_mos_int_water,
    avg(mos_int_apt) AS sum_mos_int_apt,
    avg(mos_int_park) AS sum_mos_int_park
FROM (
    SELECT
        mos_int_date,
        mos_int_water,
        mos_int_apt,
        mos_int_park,
        FLOOR((ROW_NUMBER() OVER (ORDER BY mos_int_date) - 1) / 3) AS group_id
    FROM
        mos_info
) t
GROUP BY
    group_id;

위 쿼리에서 봐야할 부분은 아래 쿼리 부분

FLOOR((ROW_NUMBER() OVER (ORDER BY mos_int_date) - 1) / 3) AS group_id
  1. 기간별 ORDER BY
  2. ROW_NUMBER()로 행 번호를 부여
  3. 부여된 행 번호를 각 -1 하고 3으로 나눔

그럼 최종적으로 3일 간격의 데이터를 얻을 수 있음

0개의 댓글