Хитрость в подсчете INCLUDE_IND, только когда флаг установлен в «Y», заключается в использовании CASE () для проверки его значения:
SQL> select a.id
2 , a.name
3 , sum ( c.val) as total
4 , count( case when c.include_ind = 'Y' then 1
5 else null end ) as inc_ind_cnt
6 from a
7 join b on ( b.id = a.id )
8 join c on ( c.id_sec = b.id_sec )
9 group by a.name, a.id
10 order by a.id
11 /
ID NAME TOTAL INC_IND_CNT
---------- ---------- ---------- -----------
1 Jason 600 2
2 Peter 60 1
3 Ravi 6000 0
SQL>
ORDER BY необходим для гарантии порядка сортировки, поскольку Oracle изменил алгоритм, который он использует для операций GROUP BY, в 10g.