Как сказал @JonH, вам нужно использовать вставку для заполнения таблицы. Сделав ряд предположений, ваш запрос может выглядеть так:
insert into Target_Table
(str_week_day, end_week_day, age_id, usage_ratio eq_type)
select str_week_day,
week_start+6 as end_week_day
a.aid as age_id,
a.cnt/m.cnt as usage_ratio,
(case when a.m>a.r then 'M' else 'R'end) as eq_type
from
(select aid,
sum(case when eq_type='M'then 1 else 0 end) as "M",
sum(case when eq_type='R'then 1 else 0 end) as "R" ,
count(*) as cnt,
trunc(start_date,"D") as str_week_day
from mfrp1
group by aid,
trunc(start_date,"D")) a,
(select count(*) as cnt from mfrp1) m;
Однако, как сказал @Brian Hooper, вам будет намного лучше с видом. Как он упомянул, представление всегда будет соответствовать исходным данным, поскольку это просто хранимый запрос, который выполняется по этим данным по требованию. Поскольку к представлению обращаются точно так же, как к таблице, они в большинстве случаев неразличимы для пользователя (будь то человек или приложение).
create or replace view Target_Table as
select str_week_day,
week_start+6 as end_week_day
a.aid as age_id,
a.cnt/m.cnt as usage_ratio,
(case when a.m>a.r then 'M' else 'R'end) as eq_type
from
(select aid,
sum(case when eq_type='M'then 1 else 0 end) as "M",
sum(case when eq_type='R'then 1 else 0 end) as "R" ,
count(*) as cnt,
trunc(start_date,"D") as str_week_day
from mfrp1
group by aid,
trunc(start_date,"D")) a,
(select count(*) as cnt from mfrp1) m;
Если это слишком медленно, вы можете рассмотреть материализованное представление, которое выполнит большую работу по поддержанию актуальности агрегированных данных, но хранит данные отдельно для ускорения доступа. В большинстве случаев это не обязательно.