如何在PostgreSQL中获取每月每月的月份数据

时间:2018-10-04 02:19:15

标签: postgresql

我使用psql v.10.5

我有一个像这样的结构表:

|     date      | total |
-------------------------
|  01-01-2018   |   50  |
|  05-01-2018   |   90  |
|  30-01-2018   |   20  |

如何按月获取回顾数据,但数据显示连续30天,我希望数据显示如下:

|     date      | total |
-------------------------
|  01-01-2018   |   50  |
|  02-01-2018   |   0   |
|  03-01-2018   |   0   |
|  04-01-2018   |   0   |
|  05-01-2018   |   90  |
.....
|  29-01-2018   |   0   |
|  30-01-2018   |   20  |

我已经尝试过该查询:

SELECT * FROM date
WHERE EXTRACT(month FROM "date") = 1  // dynamically
AND EXTRACT(year FROM "date") = 2018  // dynamically

但是结果不是我期望的。以及我动态创建的月份和日期的参数。

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

使用功能generate_series(start, stop, step interval),例如:

select d::date, coalesce(total, 0) as total
from generate_series('2018-01-01', '2018-01-31', '1 day'::interval) d
left join my_table t on d::date = t.date

Working example in rextester.