4
我想是什么力量让一个表的统计信息,为此我使用generate_series();
Postgres的generate_series
下面是我在做什么:
SELECT x.month, amount
FROM (SELECT generate_series(
min(date_trunc('month', date)),
max(date_trunc('month', date)),
'1 month'
) AS month
FROM table
WHERE user_id = 55 AND ...
) x
LEFT JOIN (
SELECT SUM(amount) AS amount, date_trunc('month', date) AS month
FROM table
WHERE user_id = 55 AND ...
GROUP BY month
) q ON q.month = x.month
ORDER BY month
这种运作良好,但是当我想要应用过滤器,例如获取特定用户的金额,我必须将它们应用两次。有没有办法避免过滤两次,或以更有效的方式重写,因为我不确定这是否是正确的方法?
我从来没有想过CTE,但他们真的很有用。非常感谢,它非常完美。 – yokoloko
+1我学到了一些我对postgres不了解的东西 - 谢谢:) – Bohemian
如何生成如 这样的系列从generate_series(01,12)中选择m输出:01,02,03,04,05,06,07 ,08,09,10,11,12 –