首页 > 解决方案 > 每月计数 PostgreSQL 给几个月

问题描述

我为这样的客户准备了一张桌子

cust_id | date_signed_up | location_id
-----------------------------------------
   1    |  2019/01/01    |      1
   2    |  2019/03/05    |      1
   3    |  2019/06/17    |      1

我需要的是每月计数,但即使是 0 也有月份。例如:

monthly_count |  count
-------------------------
     Jan      |    1
     Feb      |    0
     Mar      |    1
     Apr      |    0

(月份可以是数字)

现在我做了这个查询:

SELECT date_trunc('MONTH', (date_signed_up::date)) AS monthly, count(customer_id) AS count FROM customer 
WHERE group_id = 1 
GROUP BY monthly
ORDER BY monthly asc

但它只给我几个月的信息,跳过那些为零的信息。即使他们有或没有信息,我怎么能得到所有的月份。

标签: postgresql

解决方案


您需要一份月份清单。

如何在 PostgreSQL 中生成月份列表?

  SELECT a.month , count( y.cust_id )
  FROM allMonths a
  LEFT JOIN yourTable y
    ON a.month = date_trunc('MONTH', (date_signed_up::date)) 
  GROUP BY a.month 

推荐阅读