Advertisement
AlexErin1308

Практика: расчёт ROI. Task №№ 1-3

Jun 13th, 2024 (edited)
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PostgreSQL 2.07 KB | Source Code | 0 0
  1. -- 1.Для начала рассчитайте выручку в динамике по месяцам, используя функцию DATE_TRUNC(). Поле c датой приведите к типу данных date. Поля можете переименовать по-своему.
  2.  
  3. SELECT CAST(DATE_TRUNC('month', paid_at) AS date) AS month, SUM(total_amt) AS revenue
  4. FROM tools_shop.orders
  5. GROUP BY CAST(DATE_TRUNC('month', paid_at) AS date)
  6. ORDER BY revenue DESC
  7. -- 2. Теперь нужно рассчитать стоимость привлечения пользователей в динамике по месяцам.
  8.  
  9. SELECT CAST(DATE_TRUNC('month', created_at) AS date) AS month, SUM(costs) AS expenses
  10. FROM tools_shop.costs
  11. GROUP BY CAST(DATE_TRUNC('month', created_at) AS date)
  12. ORDER BY expenses DESC
  13.  
  14. -- 3. Теперь нужно соединить два подзапроса по дате. Обратите внимание, что в условии, по которому вы присоединяете таблицы или подзапросы, лучше указывать поля с одинаковыми типами данных. В противном случае СУБД попробует преобразовать один тип данных в другой. Такое неявное преобразование может привести к ошибке, поэтому лучше указать нужный тип данных самостоятельно. Добавьте подзапросам псевдонимы и соедините их. Затем выведите ROI в динамике по месяцам.
  15.  
  16. SELECT dc.dt, total_amt * 100 /  costs-- добавьте нужные поля и расчёты
  17.  
  18. FROM
  19. (SELECT DATE_TRUNC('month', created_at)::date AS dt,
  20.        SUM(costs) AS costs
  21. FROM tools_shop.costs
  22. GROUP BY dt) AS dc
  23. --  соедините подзапросы
  24. JOIN
  25. (SELECT DATE_TRUNC('month', paid_at)::date AS dt,
  26.        SUM(total_amt) AS total_amt
  27. FROM tools_shop.orders
  28. GROUP BY dt) AS o ON dc.dt = o.dt;
  29.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement