在一个 table 中查询最大日期,在另一个中查询组 ID

Query max date in one table and group id in another

我需要查询每个客户的最新购买。

购买:

purchase_id |日期
----------+------------
 1 | 2020-03-10
 2 | 2020-03-15
 3 | 2020-03-14
 4 | 2020-03-12

采购客户加入Table:

purchase_id | customer_id
----------+------------
 1 | 3个
 2 | 7
 3 | 5个
 4 | 5个

通过这个查询,我可以获得日期和客户 ID 的组合。但是我也需要购买ID。

SELECT
MAX(p.date), c.customer_id
FROM purchases AS p
JOIN purchase_customer AS c
ON p.purchase_id = c.purchase_id
GROUP BY c.customer_id

我知道大多数数据库都有针对此类问题的特定功能,但我想要一个 RDBMS 独立解决方案。

典型的 "standard" 方式使用 row_number():

SELECT pc.*
FROM (SELECT p.*, c.customer_id,
             ROW_NUMBER() OVER (PARTITION BY c.customer_id ORDER BY p.date DESC) as seqnum
      FROM purchases p JOIN
           purchase_customer c
           ON p.purchase_id = c.purchase_id
     ) pc
WHERE seqnum = 1;