PostgreSQL关联订单与合作伙伴表,按邮箱统计订单并提取ID
PostgreSQL按邮箱统计订单并关联合作伙伴ID的实现方案
完全可以实现这个需求,核心是通过表关联后按邮箱分组,统计订单总数并提取对应任意一个合作伙伴ID。以下是具体的SQL实现:
假设两张表的名称分别为partner_orders(订单合作伙伴表)和partners(合作伙伴信息表),执行以下SQL:
SELECT MIN(po.partner_id) AS partner_id, p.email, COUNT(po.order_id) AS sale_count FROM partner_orders po INNER JOIN partners p ON po.partner_id = p.id GROUP BY p.email;
代码说明:
- 表关联:通过
INNER JOIN将两张表按partner_id和id关联,获取每个订单对应的合作伙伴邮箱。 - 分组统计:按
email分组,确保同一邮箱的订单被合并统计。 - 提取任意partner_id:使用
MIN(po.partner_id)获取该邮箱对应的任意一个合作伙伴ID,若需要取最大ID则替换为MAX(po.partner_id),两者都满足“任意一个”的需求。 - 订单数统计:
COUNT(po.order_id)统计该邮箱关联的所有订单总数,匹配示例中的结果。
执行该SQL后,会得到与你需求完全一致的结果:
| partner_id | sale_count | |
|---|---|---|
| 1 | some_email@email.com | 3 |
| 4 | email@email.com | 3 |
内容的提问来源于stack exchange,提问作者fueggit
相关产品推荐
相关产品推荐

