【发布时间】:2021-06-12 15:47:48
【问题描述】:
我有一个这样的机器安装表:
installationID, machineID, installed_at, uninstalled_at
A, 1, 2020-01-01, Null
B, 2, 2020-01-01, 2020-01-02
C, 3, 2020-01-02, Null
D, 2, 2020-01-04, Null
我需要一个查询来返回每天安装的机器数量。 像这样:
Date, installed
2020-01-01, 2
2020-01-02, 3
2020-01-03, 2
2020-01-04, 3
我知道给定一个日期,比如“2020-01-03”,我可以得到安装机器的数量,如下所示:
SELECT date, count(machineID)
from installs
where installed_at >= '2020-01-03'
and (uninstalled_at is Null or uninstalled_at <= '2020-01-03')
但是,我不知道如何以这样一种方式进行查询,以便在一次查询中获得所有日期的结果。
【问题讨论】:
-
使用日历表或动态生成一系列日期。 postgresql.org/docs/current/functions-srf.html
-
我想我应该使用 generate_series,但我不知道该怎么做。我需要将数据传递给过滤器,或者我应该在过滤器中调用查询(无论这意味着 >.
-
这可能会回答我的问题:stackoverflow.com/questions/45890142/…
标签: sql database postgresql