gpt4 book ai didi

postgresql - Postgres,每天计算条目数,包括没有条目的天数

转载 作者:行者123 更新时间:2023-11-29 13:15:40 24 4
gpt4 key购买 nike

我有一个包含几个字段的表,但我只想计算每天的条目数,其中 state 字段例如'拒绝'。字段 createdAt 是带有时区的时间戳。

id | createdAt                  | state
------------------------------------------
1 | 2018-01-17 13:53:17.303+00 | rejected
2 | 2017-10-19 20:39:18.232+00 | approved

所以我想计算两个时间戳之间每天的行数。没有任何条目的天数应返回 0 或 NULL。我创建的查询返回正确的时间序列,但不知何故我的连接或计数似乎很奇怪。它返回了数千个条目,但通常只有 0 到 20 个条目。(整个表少于 3800 个条目)

SELECT serie.day AS time, count(t."createdAt") AS created
FROM (
SELECT generate_series(
to_timestamp(1518248353)::date,
to_timestamp(1521469246)::date,
interval '1 day'
) AS day
FROM users t
) serie
LEFT JOIN users t ON t."createdAt"::date = serie.day::date
WHERE state ILIKE 'rejected'
GROUP BY serie.day
ORDER BY time;

错误结果:

2018-02-10 00:00:00+00  11619
2018-02-11 00:00:00+00 23238
2018-02-12 00:00:00+00 27111
2018-02-13 00:00:00+00 19365
2018-02-14 00:00:00+00 15492
2018-02-15 00:00:00+00 34857
2018-02-16 00:00:00+00 34857
2018-02-17 00:00:00+00 15492
2018-02-18 00:00:00+00 46476
2018-02-19 00:00:00+00 15492
2018-02-21 00:00:00+00 27111
2018-02-22 00:00:00+00 19365
2018-02-23 00:00:00+00 11619
2018-02-24 00:00:00+00 3873
2018-02-25 00:00:00+00 3873
...

预期结果如下:

2018-02-10 00:00:00+00  3
2018-02-11 00:00:00+00 9
2018-02-12 00:00:00+00 0
2018-02-13 00:00:00+00 19
2018-02-14 00:00:00+00 15
2018-02-15 00:00:00+00 3
2018-02-16 00:00:00+00 7
...

最佳答案

为什么要将生成的系列连接到子查询中的用户表?我认为这是你的问题。通常,当您使用generate_series()时,您只需提供开始日期时间、结束日期时间和间隔,它就会将该系列生成为表格。

试试这个:

SELECT
serie.day AS time,
COUNT(t."createdAt") AS created
FROM (
SELECT date_series::date AS day
FROM generate_series(
to_timestamp(1518248353)::date,
to_timestamp(1521469246)::date,
'1 day'
) AS date_series
) AS serie
LEFT JOIN users t ON t."createdAt"::date = serie.day::date
AND state ILIKE 'rejected'
GROUP BY serie.day
ORDER BY time;

关于postgresql - Postgres,每天计算条目数,包括没有条目的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49379043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com