Я должен рассчитать% вклада для каждой категории.
SELECT portfolio, (total_portfolio_views*1.00000/total_views)*100 view_contribution_perc
FROM(
select portfolio,sum(portfolio_views) AS total_portfolio_views, (select sum(portfolio_views) from gold.user_daily_osv) as total_views
from gold.user_daily_osv
group by 1
)
ORDER BY 2 DESC
Хотя это работает нормально, но выполнение занимает много времени, поскольку это огромные таблицы, любой другой обходной путь для того же был бы очень полезен.
@GuruStron Я использую Presto
Вы можете попробовать использовать sum
оконная функция для вычисления общего количества просмотров в совокупности:
SELECT portfolio,
(total_portfolio_views * 1.0 / sum(total_portfolio_views) over ()) * 100 view_contribution_perc
FROM(
select portfolio,
sum(portfolio_views) AS total_portfolio_views
from gold.user_daily_osv
group by 1
)
ORDER BY 2 DESC
Redshift и presto - это разные движки sql. Какой из них вы используете?