问题描述
好吧,我需要的查询很简单,也许是另一个问题,但是我需要的是性能,所以:
我有一个具有10.000行的用户表,该表包含ID,电子邮件和更多数据。
在另一个名为 orders 的表中,我有更多行,也许是150.000行。
在此订单中,我拥有下订单的用户的 id ,还有订单的状态。 状态可以是0到9之间的数字(或为空)。
我的最终要求是让每个用户都具有 id,电子邮件,其他一些列以及状态为3或7的订单数。它的3或7中,我只需要数量
什么是最好的方法?
我需要使用postgres 10在redash中运行它。
解决方法
这听起来像是join
和group by
:
select u.*,count(*)
from users u join
orders o
on o.user_id = u.user_id
where o.status in (3,7)
group by u.user_id;
Postgres通常在优化这些查询方面非常出色-并且上面假设users(user_id)
是主键-因此它应该可以很好地工作。