public_analysis.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from model.DateUtils import DateUtils
  2. from model.DataBaseUtils import *
  3. from model.log import logger
  4. from model.CommonUtils import *
  5. du = DateUtils()
  6. log = logger()
  7. def book_rank(start,end,book,stage,page,page_size,order_by,order):
  8. db=MysqlUtils()
  9. op1=f" and book='{book}'" if book else ''
  10. op2 = f" and dt>='{start}' " if start else ''
  11. op3 = f" and dt<='{end}' " if end else ''
  12. op4 = f" order by {order_by} {order}" if order_by and order else ''
  13. op5=f" and stage='{stage}'" if stage else ''
  14. sql=f"""select
  15. concat(DATE_FORMAT(min(dt),'%Y/%m/%d') ,'~',DATE_FORMAT(max(dt),'%Y/%m/%d')) date,
  16. pitcher,book,stage,
  17. sum(cost) cost,
  18. sum(view_count) view_count,
  19. sum(click_count) click_count,
  20. round(sum(click_count)/sum(view_count),4) click_rate,
  21. round(sum(cost)*1000/sum(view_count),2) thousand_view_cost,
  22. sum(reg_order_user) reg_user,
  23. sum(reg_order_count) reg_count,
  24. sum(first_order_amount) first_amount,
  25. sum(reg_order_amount) reg_amount,
  26. round(sum(first_order_amount)/sum(cost),4) first_roi,
  27. round(sum(reg_order_amount)/sum(cost),4) roi
  28. from dw_channel where 1=1 {op1} {op2} {op3} {op5} GROUP BY channel,book,pitcher,stage
  29. {op4}"""
  30. print(sql)
  31. return getLimitData(db.dm,sql,page,page_size)