【发布时间】:2016-07-11 15:46:39
【问题描述】:
我的 sql-fu 并不强大,我确信我在尝试使其正常工作时遗漏了一些简单的东西。我有一组相当标准的表格:
users
-----
id
name
carts
-----
id
user_id
purchased_at
line_items
----------
id
cart_id
product_id
products
--------
id
permalink
如果该用户购买了特定产品,我想获取每个用户购买的购物车的总数。也就是说:如果他们购买的购物车中至少有一个具有特定永久链接的产品,我想要计算购买的购物车的总数,无论其内容如何。
购买的购物车的定义是当 carts.purchased_at 不为空时。
select
u.id,
count(c2.*) as purchased_carts
from users u
inner join carts c on u.id = c.user_id
inner join line_items li on c.id = li.cart_id
inner join products p on p.id = li.product_id
left join carts c2 on u.id = c2.user_id
where
c.purchased_at is not NULL
and
c2.purchased_at is not NULL
and
p.permalink = 'product-name'
group by 1
order by 2 desc
purchase_carts 的数字异常高,可能与订单项总数乘以购物车数有关?也许?我对结果感到很困惑。任何帮助将不胜感激。
【问题讨论】:
标签: postgresql count aggregate