2016-10-11 1 views
0

PostgreSQL 9.5 데이터베이스에는 다양한 메트릭 (유형 : varchar)이 포함 된 테이블 metrics_raw이 있습니다.
유형은 (예 :) : TRA, RTC입니다.
나는 연초 대비 월별 집계를 얻기 위해 다음과 같은 SQL을 실행 해요 :외부 조인이있는 PostgreSQL timeseries 쿼리

SELECT 
    count(*), 
    "ticks"."ts" AS "timestamp" 
FROM 
    "metrics_raw" 
RIGHT OUTER JOIN 
    generate_series('2016-01-01'::timestamp, '2016-10-10'::timestamp, '1 month'::interval) AS ticks(ts) 
ON 
    "ticks"."ts" = date_trunc('months', "metrics_raw"."timestamp") 
WHERE 
    "metrics_raw"."type" = 'TRA' OR 
    "metrics_raw"."type" IS NULL 
GROUP BY "ticks"."ts" 
ORDER BY "ticks"."ts" 

표는 TRA 유형 (~ 10 개 개의 레코드)과 RTC 유형의 한 기록의 일부 레코드가 포함되어 있습니다. 쿼리를 실행
TRA내가 예상대로 10 행이 결과를 얻을 수 있지만, RTC 쿼리 난 단지 7 행을 얻을. 또 하나의 것은 RTC 메트릭스가없는 것입니다. 행도 있습니다.

어디에서 실수가 될 수 있습니까?

+1

문제는 어디 조건이다. 왼쪽 외부 조인을 사용하여 쿼리를 설정하고 metric_raw.type =을 조인 클로저에 넣어야합니다 – Nemeros

답변

0

내가 할 쿼리를 고정 @Nemeros 감사합니다

SELECT 
    "ticks"."ts" AS "timestamp" 
FROM 
    generate_series('2016-01-01'::timestamp, '2016-10-10'::timestamp, '1 month'::interval) AS ticks(ts) 
LEFT OUTER JOIN 
    (
    SELECT * 
    FROM "metrics_raw" 
    WHERE "metrics_raw"."type" = 'TRA' 
) as "metrics" 
ON 
    "ticks"."ts" = date_trunc('months', "metrics"."timestamp") 
GROUP BY "ticks"."ts" 
ORDER BY "ticks"."ts"