繁体   English   中英

带有外部联接的PostgreSQL时间序列查询

[英]PostgreSQL timeseries query with outer join

在PostgreSQL 9.5数据库中,有一个表metrics_raw,其中包含各种度量( 类型:varchar )。
类型是(例如): TRARTC
我正在执行以下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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM