내 테이블에 다음 형식의 데이터가 있습니다.
| date | type | value |
+----------+------+-------+
|2020-01-01| A | 29|
|2020-02-01| A | 32|
|2020-04-01| A | 56|
|2020-05-01| A | 78|
|2020-01-01| B | 12|
|2020-02-01| B | 89|
|2020-03-01| B | 44|
|2020-05-01| B | 33|
이제이 데이터를 쿼리하는 동안 누락 된 날짜를 null 값으로 채우고 싶습니다.
PostgreSQL에서는 generate_series()
일련의 날짜를 생성 한 다음 계속 조인하는 데 사용할 수 있습니다. 그러나 그것은 일련의 날짜와 값이있는 경우에만 작동합니다. 이 경우에는 두 가지 유형이 있기 때문에 시리즈 전체에서 누락 된 날짜는 없지만 각 그룹 / 파티션에 누락 된 날짜가 있습니다.
이 경우 generate_series()
왼쪽 조인과 함께 사용 하여 행을 null로 채울 수 있습니까?
모든 유형이 포함 된 테이블과 교차 조인 한 다음 이미 고려하고있는 동일한 왼쪽 조인 접근 방식을 사용할 수 있습니다.
SELECT
date_trunc('day', cal)::date AS date,
t1.type,
t2.value
FROM generate_series
( '2020-01-01'::timestamp
, '2020-12-31'::timestamp
, '1 day'::interval) cal
CROSS JOIN (SELECT DISTINCT type FROM yourTable) t1
LEFT JOIN yourTable t2
ON t2.date = cal.date AND t2.type = t1.type
ORDER BY
t1.type,
cal.date;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다