Вы можете использовать коррелированный подзапрос, который получает счет за день (при условии, что reg_ts
- это день, несмотря на то, что он timestamp
).
SELECT u1.reg_ts AS registiration_date,
u1.reg_attribution AS acquisition_type,
count(*) / (SELECT count(*)
FROM users u2
WHERE u2.reg_ts = u1.reg_ts) AS share
FROM users u1
GROUP BY u1.reg_ts,
u1.reg_attribution
ORDER BY u1.reg_ts ASC;
Редактировать:
Если вы хотите, чтобы соотношение относилось к общему количеству пользователей, а не пользователей, которые зарегистрировались в тот день, просто удалите предложение WHERE
из подзапроса.
SELECT u1.reg_ts AS registiration_date,
u1.reg_attribution AS acquisition_type,
count(*) / (SELECT count(*)
FROM users u2) AS share
FROM users u1
GROUP BY u1.reg_ts,
u1.reg_attribution
ORDER BY u1.reg_ts ASC;