【发布时间】:2011-10-31 12:46:18
【问题描述】:
我想要对表格进行统计,为此我使用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
这很好用,但是当我想应用过滤器(例如获取特定用户的金额)时,我必须应用它们两次。有没有办法避免过滤两次,或者以更有效的方式重写它,因为我不确定这是否是正确的做法?
【问题讨论】:
标签: sql postgresql generate-series