Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Mailing Lists -> Oracle-L -> Analitics help please....
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-LReceived on Mon Feb 03 2003 - 10:09:24 CST
(or the name of mailing list you want to be removed from). You may
also send the HELP command for other information (like subscribing).
![]() |
![]() |