[英]PostgreSQL timeseries query with outer join
在PostgreSQL 9.5数据库中,有一个表metrics_raw,其中包含各种度量( 类型:varchar )。
类型是(例如): TRA , RTC 。
我正在执行以下SQL,以获取年初至今的每月汇总:
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条记录)和1条RTC类型的记录。
执行TRA的查询,我得到了预期的10行结果,但是对于RTC查询,我只得到了7行。 还有一件事是,没有RTC指标,我也会得到10行。
哪里可能有错误?
谢谢@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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.