>
>
> 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)

Reply via email to