如何通过加入PostgreSQL获得聚合结果

时间:2018-03-07 18:02:44

标签: sql postgresql join aggregate-functions

我有两个名为Purchase和PurchaseOrder的表,每个表都有以下字段:

Purchase
---------
id
date_shipped
id_po          -> FK of Purchase Order

PurchaseOrder
---------
id
date_po

我需要根据PurchaseOrder的{​​{1}}年对它们进行分组。到目前为止,我一直在使用date_po表的date_shipped字段,并带有以下查询:

Purchase

现在,我需要加入这两个表,并在select extract(year from date_shipped), count(*) from purchase group by(extract(year from date_shipped)); 的{​​{1}}年而不是PurchaseOrder的{​​{1}}字段中对它们进行分组。我尝试了各种查询,但无法完成结果。我试过的一个问题是:

date_po

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您有group by子句,则只能使用其中的术语(或应用了行函数)和选择列表中的聚合术语:

SELECT     EXTRACT(YEAR FROM po.date_po), COUNT(*)
FROM       purchase p 
INNER JOIN purchase_order po ON p.id_po = po.id
GROUP BY   EXTRACT(YEAR FROM po.date_po)