Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Mailing Lists -> Oracle-L -> Re: Analitics help please....

Re: Analitics help please....

From: Steve Perry <sperry_at_sprynet.com>
Date: Mon, 03 Feb 2003 17:18:38 -0800
Message-ID: <F001.00542939.20030203171838@fatcity.com>


Will this work?

select b.id

     , trunc(b.today) tday
     , b.code
     , b.value
     , sum(B.VALUE) over (partition by  b.id, trunc(b.today), b.code order
by b.id, trunc(b.today), B.CODE range between unbounded preceding and CURRENT ROW) val_total
  from ( select id, trunc(today) today, code, sum(value) val_total
           from sum_test
          group by id, trunc(today), code
       ) a
     , sum_test b

 where a.id=b.id
   and trunc(b.today)=a.today
   and a.code=b.code
order by 2, 1
/

> I need some help with some SQL pleeeaasseee....
>
> I'm trying to do some summay work with some data using some of the
> Oracle9i Analytic functions.
>
> Here is the sample data:
>
>
> SQL> select * from sum_test;
>
> ID TODAY CODE VALUE
> ---------- --------- -------------------- ----------
> 1 02-FEB-03 A 100
> 1 02-FEB-03 A 200
> 1 02-FEB-03 B 50
> 1 03-FEB-03 A 50
> 1 03-FEB-03 B 25
> 1 05-FEB-03 A 725
> 1 05-FEB-03 C 125
> 1 02-FEB-03 A 100
> 1 03-FEB-03 A 100
> 2 02-FEB-03 A 100
> 2 03-FEB-03 A 100
> 2 04-FEB-03 B 100
>
> and here is how I want the output to look:
> Note that I want:
> 1. for the first day I want total by ID, tday (truncated date) and code. I
> want the daily total in the VAL_TOTAL column
> 2. For each subsiquent day, I want that days total in val_total ADDED
> to the previous total.
>
> ID TDAY CODE VALUE VAL_TOTAL
> ---------- --------- -------------------- ---------- ----------
> 1 02-FEB-03 A 100 400
> 1 02-FEB-03 A 200 400
> 1 02-FEB-03 A 100 400
> 1 02-FEB-03 B 50 50
> 2 02-FEB-03 A 100 100
> 1 03-FEB-03 A 50 550
> 1 03-FEB-03 A 100 550
> 1 03-FEB-03 B 25 75
> 2 03-FEB-03 A 100 750
> 2 04-FEB-03 B 100 175
> 1 05-FEB-03 A 725 1275
> 1 05-FEB-03 C 125 125
>
> Here is the query I'm trying:
>
> select b.id, trunc(b.today) tday, b.code, b.value,
> sum(a.val_total) over
> (partition by b.id, trunc(b.today), b.code order by b.id,
> trunc(b.today)
> range between unbounded preceding and unbounded following) val_total
> from
> (
> select id, trunc(today) today, code, sum(value) val_total
> from sum_test
> group by id, trunc(today), code
> ) a,
> sum_test b
> where a.id=b.id
> and trunc(b.today)=a.today
> and a.code=b.code
> order by 2, 1
> /
>
> Results...
>
> ID TDAY CODE VALUE VAL_TOTAL
> ---------- --------- -------------------- ---------- ----------
> 1 02-FEB-03 A 100 1200
> 1 02-FEB-03 A 200 1200
> 1 02-FEB-03 A 100 1200
> 1 02-FEB-03 B 50 50
> 2 02-FEB-03 A 100 100
> 1 03-FEB-03 A 50 300
> 1 03-FEB-03 A 100 300
> 1 03-FEB-03 B 25 25
> 2 03-FEB-03 A 100 100
> 2 04-FEB-03 B 100 100
> 1 05-FEB-03 A 725 725
> 1 05-FEB-03 C 125 125
> Obviously not correct. I know I can do this with a self join to the table,
> but I was hopeful that I could do it this way. Any ideas?
>
>
>
>
>
> --
> Please see the official ORACLE-L FAQ: http://www.orafaq.net
> --
> Author: Freeman Robert - IL
> INET: FREEMANR_at_tusc.com
>
> Fat City Network Services -- 858-538-5051 http://www.fatcity.com
> San Diego, California -- Mailing list and web hosting services
> ---------------------------------------------------------------------
> To REMOVE yourself from this mailing list, send an E-Mail message
> to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
> the message BODY, include a line containing: UNSUB ORACLE-L
> (or the name of mailing list you want to be removed from). You may
> also send the HELP command for other information (like subscribing).
>

-- 
Please see the official ORACLE-L FAQ: http://www.orafaq.net
-- 
Author: Steve Perry
  INET: sperry_at_sprynet.com

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: ListGuru_at_fatcity.com (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).
Received on Mon Feb 03 2003 - 19:18:38 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US