带有 WHERE 子句的 PostgreSQL generate_series
PostgreSQL generate_series with WHERE clause
我在生成一系列日期然后返回与系列中每个日期匹配的 COUNT
行时遇到问题。
SELECT generate_series(current_date - interval '30 days', current_date, '1 day':: interval) AS i, COUNT(*)
FROM download
WHERE product_uuid = 'someUUID'
AND created_at = i
GROUP BY created_at::date
ORDER BY created_at::date ASC
我希望输出为系列中与当前日期匹配的行数。
05-05-2018, 35
05-06-2018, 23
05-07-2018, 0
05-08-2018, 10
...
架构包含以下列:id
、product_uuid
、created_at
。任何帮助将不胜感激。如果需要,我可以添加更多细节。
将 table 生成函数放在 from
中并使用 join
:
SELECT g.dte, COUNT(d.product_uuid)
FROM generate_series(current_date - interval '30 days', current_date, '1 day':: interval
) gs(dte) left join
download d
on d.product_uuid = 'someUUID' AND
d.created_at::date = g.dte
GROUP BY g.dte
ORDER BY g.dte;
我在生成一系列日期然后返回与系列中每个日期匹配的 COUNT
行时遇到问题。
SELECT generate_series(current_date - interval '30 days', current_date, '1 day':: interval) AS i, COUNT(*)
FROM download
WHERE product_uuid = 'someUUID'
AND created_at = i
GROUP BY created_at::date
ORDER BY created_at::date ASC
我希望输出为系列中与当前日期匹配的行数。
05-05-2018, 35
05-06-2018, 23
05-07-2018, 0
05-08-2018, 10
...
架构包含以下列:id
、product_uuid
、created_at
。任何帮助将不胜感激。如果需要,我可以添加更多细节。
将 table 生成函数放在 from
中并使用 join
:
SELECT g.dte, COUNT(d.product_uuid)
FROM generate_series(current_date - interval '30 days', current_date, '1 day':: interval
) gs(dte) left join
download d
on d.product_uuid = 'someUUID' AND
d.created_at::date = g.dte
GROUP BY g.dte
ORDER BY g.dte;