Sql Postgres交叉表和聚合在一起

Sql Postgres交叉表和聚合在一起,sql,postgresql,crosstab,data-analysis,Sql,Postgresql,Crosstab,Data Analysis,我有一张表purchases如下: purchase_id|purchase_date|product_id 1 | 2016-02-04 | 17 2 | 2016-02-04 | 19 3 | 2016-02-04 | 17 ... About 1 million entries product_id 17 18 19 ... About 30 entries purchase_date|pr

我有一张表
purchases
如下:

purchase_id|purchase_date|product_id
     1     | 2016-02-04  | 17
     2     | 2016-02-04  | 19
     3     | 2016-02-04  | 17
     ... About 1 million entries
product_id
   17
   18
   19
   ... About 30 entries
 purchase_date|product_id_17|product_id_18|product_id_19|product_id...
   2016-02-04 |   2         |  0          |  1          | ...
   2016-02-05 | ...
还有一个表
产品
,如下所示:

purchase_id|purchase_date|product_id
     1     | 2016-02-04  | 17
     2     | 2016-02-04  | 19
     3     | 2016-02-04  | 17
     ... About 1 million entries
product_id
   17
   18
   19
   ... About 30 entries
 purchase_date|product_id_17|product_id_18|product_id_19|product_id...
   2016-02-04 |   2         |  0          |  1          | ...
   2016-02-05 | ...
我想做一个交叉表查询,以给出日期的总购买数量,以每个产品id为中心,如下所示:

purchase_id|purchase_date|product_id
     1     | 2016-02-04  | 17
     2     | 2016-02-04  | 19
     3     | 2016-02-04  | 17
     ... About 1 million entries
product_id
   17
   18
   19
   ... About 30 entries
 purchase_date|product_id_17|product_id_18|product_id_19|product_id...
   2016-02-04 |   2         |  0          |  1          | ...
   2016-02-05 | ...
请注意,此表中的值不是取自任何记录,而是匹配的记录数之和。我相信这是可能的使用
交叉表
和聚合,但还没有弄清楚如何做到这一点

  • 这可以通过Postgres实现吗
  • 交叉表是正确的方法吗
  • 怎么做
  • 这里的独特之处在于我试图:

    • 做一个交叉表
    • 汇总
    • 同时

    请注意,有关堆栈溢出的讨论交叉表的其他问题并没有解释如何进行交叉表和聚合

    表-

     create table prods(purchase_id int,purchase_date date,product_id int);
    
    资料-

    要获得所需的输出,您可以使用-

    输出-

    purchase_date product_id_17 product_id_19 
    ------------- ------------- ------------- 
    2016-02-04    2             1             
    2016-02-05    2             NULL  
    

    为澄清差异而编辑的@gurvindersingh可能重复