From: | Sean Chittenden <sean(at)chittenden(dot)org> |
---|---|
To: | Josh Berkus <josh(at)agliodbs(dot)com> |
Cc: | SF Postgres <sfpug(at)postgresql(dot)org> |
Subject: | Re: Reporting: Oracle-like features? |
Date: | 2003-01-21 19:49:45 |
Message-ID: | 20030121194945.GA45119@perrin.int.nxad.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | sfpug |
> > CLEAR COMPUTES
> > CLEAR BREAKS
> > BREAK ON item_name
> > COMPUTE SUM OF sale_count*per_item ON item_name
> > SELECT s.sale_time AS "When sold"
> > , i.item_name AS "What sold"
> > , s.sale_count AS "How many"
> > , s.per_item AS "Each"
> > , s.sale_count*s.per_item AS "$ale (kaching!)"
> > FROM sales s, item i
> > ORDER BY i.item_name, s.sale_time;
>
> Ah. What Oracle is doing here is combining a reporting script with
> SQL. One can, in fact, do the above in pure SQL, it's just awkward:
>
> SELECT to_char(s.sale_time, 'YYYY-DD-MM') AS "When sold"
> , i.item_name AS "What sold"
> , s.sale_count AS "How many"
> , s.per_item AS "Each"
> , s.sale_count*s.per_item AS "$ale (kaching!)"
> FROM sales s, item i
> WHERE sales.item_id = item.item_id
> UNION ALL
> SELECT 'Total'
> , i.item_name
> , sum(s.sale_count)
> , avg(s.per_item)
> , sum(s.sale_count*s.per_item)
> FROM sales s, item i
> WHERE sales.item_id = item.item_id
> ORDER BY item_name, "When sold";
>
> This should work to give you the detail, plus a totals row just below
> the detail (since "Total" will sort after numerical dates).
>
> It's almost certainly what Oracle is doing on the back-end when it
> receives your "break on" command.
I do a ton of this stuff, but I've never thought about using a UNION,
I always end up doing a join on a sub-select. Would a UNION be
faster? For me, summing up millions of rows isn't exactly quick and
isn't exactly the easiest query in the world on the database. ;) -sc
--
Sean Chittenden
From | Date | Subject | |
---|---|---|---|
Next Message | p | 2003-01-22 14:24:52 | 新年快樂.... |
Previous Message | Dror Matalon | 2003-01-21 18:47:51 | Re: Reporting: Oracle-like features? |