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 –