| From: | Devil™ Dhuvader <gibsosmat(at)gmail(dot)com> |
|---|---|
| To: | "Osvaldo Kussama" <osvaldo(dot)kussama(at)gmail(dot)com> |
| Cc: | pgsql-sql(at)postgresql(dot)org |
| Subject: | Re: need help in building a query |
| Date: | 2008-11-08 17:12:38 |
| Message-ID: | aaa67ada0811080912j3b956570xd584750d729e2a55@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-sql |
>
>
> 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)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Sebastian Ritter | 2008-11-10 10:43:14 | Query optimizing |
| Previous Message | Devil™ Dhuvader | 2008-11-08 16:57:12 | Re: need help in building a query |