|
@@ -335,24 +335,24 @@
|
|
|
</select>
|
|
|
|
|
|
<select id="getMemberTrend" resultType="com.slodon.b2b2c.vo.statistics.ScreenMemberTrendVO">
|
|
|
- SELECT DATE_FORMAT(months.month_date, '%Y-%m') as month,
|
|
|
- COALESCE(COUNT(m.member_id), 0) as newMemberNum
|
|
|
- FROM (
|
|
|
- SELECT DATE_SUB(CURDATE(), INTERVAL (a.a + (10 * b.a)) MONTH) as month_date
|
|
|
- FROM (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
|
|
|
- UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
|
|
|
- UNION ALL SELECT 8 UNION ALL SELECT 9) as a
|
|
|
- CROSS JOIN (SELECT 0 as a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
|
|
|
- UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
|
|
|
- UNION ALL SELECT 8 UNION ALL SELECT 9) as b
|
|
|
- ) months
|
|
|
- LEFT JOIN member m
|
|
|
- ON DATE_FORMAT(m.register_time, '%Y-%m') = DATE_FORMAT(months.month_date, '%Y-%m')
|
|
|
- AND m.web_site = #{webSite}
|
|
|
- WHERE months.month_date <![CDATA[ >= ]]> DATE_SUB(CURDATE()
|
|
|
- , INTERVAL 6 MONTH)
|
|
|
- AND months.month_date<![CDATA[ <= ]]> CURDATE()
|
|
|
- GROUP BY months.month_date
|
|
|
- ORDER BY months.month_date;
|
|
|
+ -- 生成日期序列并关联统计
|
|
|
+ WITH RECURSIVE dates AS (
|
|
|
+ SELECT DATE(#{startTime}) AS day
|
|
|
+ UNION ALL
|
|
|
+ SELECT DATE_ADD(day, INTERVAL 1 DAY)
|
|
|
+ FROM dates
|
|
|
+ WHERE DATE_ADD(day, INTERVAL 1 DAY) <= DATE(#{endTime})
|
|
|
+ )
|
|
|
+ SELECT
|
|
|
+ d.day,
|
|
|
+ COALESCE(COUNT(m.member_id), 0) AS newMemberNum
|
|
|
+ FROM dates d
|
|
|
+ LEFT JOIN member m
|
|
|
+ ON DATE(m.register_time) = d.day
|
|
|
+ AND m.register_time BETWEEN #{startTime} AND #{endTime}
|
|
|
+ where m.web_site = #{webSite}
|
|
|
+ GROUP BY d.day
|
|
|
+ ORDER BY d.day;
|
|
|
+
|
|
|
</select>
|
|
|
</mapper>
|