> > > Try: > > bdteste=# SELECT o1.user_id, o1.order_id, '>= 500' AS cond FROM Orders o1 > bdteste-# WHERE (SELECT sum(o2.amount_paid) FROM Orders o2 WHERE > o2.user_id = o1.user_id AND o2.order_id > o1.order_id) < 500 AND > bdteste-# (SELECT sum(o2.amount_paid) FROM Orders o2 WHERE > o2.user_id = o1.user_id AND o2.order_id >= o1.order_id) >=500 > bdteste-# UNION > bdteste-# SELECT user_id, min(order_id) AS "min order id", '< 500' AS > cond FROM Orders > bdteste-# WHERE user_id IN (SELECT user_id FROM Orders GROUP BY > user_id HAVING sum(amount_paid) < 500) > bdteste-# GROUP BY user_id; > user_id | order_id | cond > ---------+----------+-------- > 1 | 2 | >= 500 > 2 | 3 | < 500 > > Osvaldo >
this sounds too heavy. as the order table has too many entries (4105258)