Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- 1.Для начала рассчитайте выручку в динамике по месяцам, используя функцию DATE_TRUNC(). Поле c датой приведите к типу данных date. Поля можете переименовать по-своему.
- SELECT CAST(DATE_TRUNC('month', paid_at) AS date) AS month, SUM(total_amt) AS revenue
- FROM tools_shop.orders
- GROUP BY CAST(DATE_TRUNC('month', paid_at) AS date)
- ORDER BY revenue DESC
- -- 2. Теперь нужно рассчитать стоимость привлечения пользователей в динамике по месяцам.
- SELECT CAST(DATE_TRUNC('month', created_at) AS date) AS month, SUM(costs) AS expenses
- FROM tools_shop.costs
- GROUP BY CAST(DATE_TRUNC('month', created_at) AS date)
- ORDER BY expenses DESC
- -- 3. Теперь нужно соединить два подзапроса по дате. Обратите внимание, что в условии, по которому вы присоединяете таблицы или подзапросы, лучше указывать поля с одинаковыми типами данных. В противном случае СУБД попробует преобразовать один тип данных в другой. Такое неявное преобразование может привести к ошибке, поэтому лучше указать нужный тип данных самостоятельно. Добавьте подзапросам псевдонимы и соедините их. Затем выведите ROI в динамике по месяцам.
- SELECT dc.dt, total_amt * 100 / costs-- добавьте нужные поля и расчёты
- FROM
- (SELECT DATE_TRUNC('month', created_at)::date AS dt,
- SUM(costs) AS costs
- FROM tools_shop.costs
- GROUP BY dt) AS dc
- -- соедините подзапросы
- JOIN
- (SELECT DATE_TRUNC('month', paid_at)::date AS dt,
- SUM(total_amt) AS total_amt
- FROM tools_shop.orders
- GROUP BY dt) AS o ON dc.dt = o.dt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement