GROUP BY
имеет значение;отметьте DECODE
в пределах:
SQL> with usage_table (sub_id, session_id, split, duration) as
2 (select 1111, '2468D', 'S1', 50 from dual union all
3 select 1111, '2468D', 'S2', 100 from dual union all
4 select 1111, '3333A', 'N', 5 from dual union all
5 select 1111, '2468D', 'S3', 25 from dual union all
6 --
7 select 2222, '1357C', 'S1', 200 from dual union all
8 select 2222, '1357C', 'S2', 300 from dual union all
9 select 2222, '1357C', 'S3', 400 from dual union all
10 select 2222, '1357C', 'N', 20 from dual
11 )
12 SELECT sub_id, session_id, sum(duration) total_duration
13 from usage_table
14 group by sub_id, session_id, decode(split, 'N', 1, 2)
15 order by sub_id, session_id;
SUB_ID SESSI TOTAL_DURATION
---------- ----- --------------
1111 2468D 175
1111 3333A 5
2222 1357C 20
2222 1357C 900
SQL>