【发布时间】:2016-10-11 08:35:25
【问题描述】:
在 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 行。
哪里可能出错了?
【问题讨论】:
-
问题是 Where 条件。您应该使用左外连接打开查询并将 metric_raw.type = 放入连接闭包
标签: sql postgresql join time-series outer-join