02技师列表.sql 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. -- Active: xiaoding_test@@192.168.110.85@3306
  2. /*
  3. 这段sql语句是根据"market_dist_teams"表获取的,这个表的解释是:
  4. 1、当一个用户A邀请另一个用户B的时候,数据是这样的
  5. - object_id是A的id
  6. - object_type是A的用户类型
  7. - user_id是B的id
  8. - 统计的时候A是B的一级邀请人
  9. 2、当用户B邀请C的时候,数据是这样的
  10. - object_id是B的id
  11. - object_type是B的用户类型
  12. - user_id是C的id
  13. - 统计的时候B是C的一级邀请人
  14. - 统计的时候A是C的二级邀请人
  15. 请重写我的统计sql
  16. */
  17. WITH
  18. /* 一级邀请人信息 */
  19. inviter_level1 AS (
  20. SELECT
  21. mdt1.user_id,
  22. m1.nickname
  23. FROM market_dist_teams mdt1
  24. LEFT JOIN member_users m1 ON mdt1.object_id = m1.id
  25. WHERE mdt1.level = '1'
  26. ),
  27. /* 二级邀请人信息 */
  28. inviter_level2 AS (
  29. SELECT
  30. mdt1.user_id,
  31. m2.nickname
  32. FROM market_dist_teams mdt1
  33. LEFT JOIN market_dist_teams mdt2 ON mdt1.object_id = mdt2.user_id
  34. LEFT JOIN member_users m2 ON mdt2.object_id = m2.id
  35. WHERE mdt1.level = '1'
  36. AND mdt2.level = '1'
  37. ),
  38. /* 钱包余额信息 */
  39. coach_wallet AS (
  40. SELECT
  41. owner_id,
  42. total_balance
  43. FROM wallet
  44. WHERE owner_type = 'COACH'
  45. )
  46. SELECT
  47. /* 性别 */
  48. mu.gender,
  49. /* 技师名称 */
  50. ci.nickname,
  51. /* 头像 */
  52. ci.avatar,
  53. /* 手机号码 */
  54. mu.mobile,
  55. /* 注册地址 */
  56. mu.register_area,
  57. /* 注册时间 */
  58. mu.created_at,
  59. /* 当前所属区域 */
  60. cl.city,
  61. /* 所属店铺 */
  62. sar.shop_name,
  63. /* 调度区域 */
  64. cl.location,
  65. /* 是否开通会员 */
  66. CASE WHEN cu.is_vip = 1 THEN '是' ELSE '否' END,
  67. /* 开通会员时间 */
  68. cu.vip_time,
  69. /* 一级邀请人 */
  70. il1.nickname,
  71. /* 二级邀请人 */
  72. il2.nickname,
  73. /* 余额 */
  74. COALESCE(cw.total_balance, 0),
  75. /* 状态 */
  76. cu.state,
  77. /* 邀请码 */
  78. cu.invite_code,
  79. /* 二维码 */
  80. cu.qr_code,
  81. /* 认证状态 */
  82. CASE
  83. WHEN cq.state = 'APPROVED' THEN '已认证'
  84. WHEN cq.state = 'PENDING' THEN '认证中'
  85. WHEN cq.state = 'REJECTED' THEN '认证失败'
  86. ELSE '未认证'
  87. END
  88. FROM coach_users cu
  89. LEFT JOIN member_users mu ON cu.user_id = mu.id
  90. LEFT JOIN coach_info_records ci ON cu.info_record_id = ci.id
  91. LEFT JOIN coach_locations cl ON cu.id = cl.coach_id AND cl.type = 'CURRENT'
  92. LEFT JOIN shop_auth_records sar ON cu.shop_id = sar.id
  93. LEFT JOIN coach_qual_records cq ON cu.qualification_record_id = cq.id
  94. LEFT JOIN inviter_level1 il1 ON cu.user_id = il1.user_id
  95. LEFT JOIN inviter_level2 il2 ON cu.user_id = il2.user_id
  96. LEFT JOIN coach_wallet cw ON cu.user_id = cw.owner_id
  97. WHERE cu.deleted_at IS NULL;