Guest User

Untitled

a guest
Nov 22nd, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.00 KB | None | 0 0
  1. WITH temp AS(
  2. SELECT
  3. dc.date_time,
  4. dc.user_id,
  5. COUNT(dc.user_id) AS matches,
  6. COUNT(d.user_id) AS active_matches, -- 在配对当天有活跃的other_user
  7. COUNT(dc.user_id) FILTER(WHERE cu.gender = 'male') AS male_matches,
  8. COUNT(dc.user_id) FILTER(WHERE cu.gender = 'female') AS female_matches,
  9.  
  10. (COALESCE(COUNT(dc.user_id) FILTER(WHERE cu.gender = 'female'))::numeric / NULLIF(COUNT(dc.user_id)::numeric, 0))::numeric(32, 4) AS ratio_female_matches,
  11.  
  12. SUM(COALESCE(dm.messages_count,0) + COALESCE(dm.audios,0) + COALESCE(dm.pictures,0)) AS messages,
  13. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count > 0 OR dm.audios > 0 OR dm.pictures > 0),0) AS users, -- 对多少当天配对用户发了消息,对话的数量(对面回不回不清楚)
  14. COALESCE(COUNT(*) FILTER(WHERE (dm.messages_count = 0 AND dm1.messages_count > 0) OR (dm.messages_count > 0 AND dm1.messages_count = 0)),0) AS onesided, -- 在当天配对的用户两人之中只有一方有消息,我发你没回或者你发我没回
  15. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 1 AND dm1.messages_count >= 1),0) AS mmsg_conversation,
  16. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 2 AND dm1.messages_count >= 2),0) AS two_mmsg_conversation,
  17. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 5 AND dm1.messages_count >= 5),0) AS five_mmsg_conversation,
  18. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 8 AND dm1.messages_count >= 8),0) AS eight_mmsg_conversation,
  19. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 10 AND dm1.messages_count >= 10),0) AS ten_mmsg_conversation,
  20. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 15 AND dm1.messages_count >= 15),0) AS fifteen_mmsg_conversation,
  21. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 20 AND dm1.messages_count >= 20),0) AS twenty_mmsg_conversation,
  22. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 30 AND dm1.messages_count >= 30),0) AS thirty_mmsg_conversation,
  23. COALESCE(COUNT(*) FILTER(WHERE dm.messages_count >= 50 AND dm1.messages_count >= 50),0) AS fifty_mmsg_conversation
  24. FROM
  25. daily_conversations_by_users dc
  26. LEFT JOIN
  27. core_users cu ON(dc.other_user_id = cu.user_id)
  28. LEFT JOIN
  29. daily_messages_by_users dm ON(dc.user_id = dm.user_id AND dc.other_user_id = dm.other_user_id AND dc.date_time = dm.date_time)
  30. LEFT JOIN
  31. daily_messages_by_users dm1 ON(dc.user_id = dm1.other_user_id AND dc.other_user_id = dm1.user_id AND dm.date_time = dm1.date_time)
  32. LEFT JOIN
  33. dailyuseractivities d ON(dc.other_user_id = d.user_id AND dc.date_time = d.date_time)
  34. WHERE
  35. --dc.date_time > COALESCE(_last_run.max_date_time, '2014-01-01')
  36. dc.date_time = '2017-11-15'
  37. GROUP BY
  38. dc.date_time, dc.user_id
  39. ORDER BY
  40. dc.date_time, dc.user_id
  41. )
  42. UPDATE stats.daily_matches_by_users_func z -- 表的schema名称需要修改
  43. SET
  44. active_matches = t.active_matches,
  45. male_matches = t.male_matches,
  46. female_matches = t.female_matches,
  47. ratio_female_matches = t.ratio_female_matches,
  48. messages = t.messages,
  49. users = t.users,
  50. onesided = t.onesided,
  51. mmsg_conversation = t.mmsg_conversation,
  52. two_mmsg_conversation = t.two_mmsg_conversation,
  53. five_mmsg_conversation = t.five_mmsg_conversation,
  54. eight_mmsg_conversation = t.eight_mmsg_conversation,
  55. ten_mmsg_conversation = t.ten_mmsg_conversation,
  56. fifteen_mmsg_conversation = t.fifteen_mmsg_conversation,
  57. twenty_mmsg_conversation = t.twenty_mmsg_conversation,
  58. thirty_mmsg_conversation = t.thirty_mmsg_conversation,
  59. fifty_mmsg_conversation = t.fifty_mmsg_conversation
  60. FROM
  61. temp t
  62. WHERE
  63. z.user_id = t.user_id
  64. AND z.date_time = t.date_time
  65. ;
Add Comment
Please, Sign In to add comment