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

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

Analitics help please....

From: Freeman Robert - IL <FREEMANR_at_tusc.com>
Date: Mon, 03 Feb 2003 08:09:24 -0800
Message-ID: <F001.005422A5.20030203080924@fatcity.com>


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).
Received on Mon Feb 03 2003 - 10:09:24 CST

Original text of this message

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