1

我有这个当前的查询:

在此处输入图像描述

这导致:

在此处输入图像描述

我想把所有这些“status_changes”按天唯一地分解出来,这样我就可以看到每天的状态变化,并在最后总结它们。它看起来像这样:

在此处输入图像描述

这可能吗?我的主要目标是使第 12 行“count(distinct driver_id) as status_changes”在一天中是唯一的,而不是在整个“spot_Check_begin”到“spot_check_end”时间范围内。

也许我错过了可能的不同查询的更大图景?

4

1 回答 1

1

您可以将 SUM 与 CASE WHEN 结合使用,而不是 COUNT。

例如:

SELECT 
sum(CASE WHEN created_at::DATE = CURRENT_DATE THEN 1 ELSE 0 END) as status_changes_1,
sum(CASE WHEN created_at::DATE = CURRENT_DATE - interval '1 day' THEN 1 ELSE 0 END) as status_changes_2,
sum(CASE WHEN created_at::DATE = CURRENT_DATE - interval '2 day' THEN 1 ELSE 0 END) as status_changes_3,
FROM

在开发版本中,我们可以将 FILTER 与聚合函数一起使用(http://www.postgresql.org/docs/devel/static/sql-expressions.html#SYNTAX-AGGREGATES)。让我们希望我们可以在不久的将来使用它。

count(driver_id) FILTER (WHERE created_at = CURRENT_DATE) AS status_changes_1
于 2013-11-30T19:40:03.007 回答