我现在有一个问题:
结果是:
我想把所有这些“状态变化”按天进行单独的分解,这样我就能看到每天的状态变化,并在最后对它们进行总结。看起来是这样的:
这可能吗?我的主要目标是使第12行“count(distinct driver_id)as status_changes”每天都是唯一的,而不是贯穿整个“spot_Check_begin”到“spot_Check_end”的时间框架。
也许我错过了一个可能不同的问题的大局?
最佳答案
你可以用总和和大小写相结合来代替计数。
例如:
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
在开发版本中,我们可以将筛选器与聚合函数一起使用
(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