|
|
@@ -412,15 +412,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
<select id="selectLiveDataDetailBySql" resultType="com.fs.live.vo.LiveDataDetailVo">
|
|
|
SELECT
|
|
|
COALESCE(video_duration.total_duration, 0) AS videoDuration,
|
|
|
- (COUNT(DISTINCT CASE WHEN lwu.live_flag = 1 AND lwu.replay_flag = 0 THEN lwu.user_id END) + COUNT(DISTINCT CASE WHEN lwu.live_flag = 0 AND lwu.replay_flag = 1 THEN lwu.user_id END)) AS totalViewers,
|
|
|
+ COUNT(DISTINCT lwu.user_id) AS totalViewers,
|
|
|
COUNT(DISTINCT CASE
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
THEN lwu.user_id
|
|
|
END) AS totalCompletedCourses,
|
|
|
CASE
|
|
|
WHEN COUNT(DISTINCT lwu.user_id) > 0 THEN
|
|
|
ROUND(COUNT(DISTINCT CASE
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
THEN lwu.user_id
|
|
|
END) * 100.0 / COUNT(DISTINCT lwu.user_id), 2)
|
|
|
ELSE 0
|
|
|
@@ -473,8 +473,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
ELSE 0
|
|
|
END AS totalViewerConversionRate,
|
|
|
CASE
|
|
|
- WHEN COUNT(DISTINCT CASE WHEN lwu.live_flag = 1 AND lwu.replay_flag = 0 AND lwu.online_seconds >= 1800 THEN lwu.user_id END) > 0 THEN
|
|
|
- ROUND(order_stats.paidUsers * 100.0 / COUNT(DISTINCT CASE WHEN lwu.live_flag = 1 AND lwu.replay_flag = 0 AND lwu.online_seconds >= 1800 THEN lwu.user_id END), 2)
|
|
|
+ WHEN COUNT(DISTINCT CASE
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
+ THEN lwu.user_id
|
|
|
+ END) > 0 THEN
|
|
|
+ ROUND(order_stats.paidUsers * 100.0 / COUNT(DISTINCT CASE
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
+ THEN lwu.user_id
|
|
|
+ END), 2)
|
|
|
ELSE 0
|
|
|
END AS completion30MinConversionRate,
|
|
|
CASE
|
|
|
@@ -484,11 +490,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
END AS peakRValue,
|
|
|
CASE
|
|
|
WHEN COUNT(DISTINCT CASE
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
THEN lwu.user_id
|
|
|
END) > 0 THEN
|
|
|
ROUND(order_stats.gmv / COUNT(DISTINCT CASE
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
+ WHEN COALESCE(user_duration.total_duration, 0) >= 1800
|
|
|
THEN lwu.user_id
|
|
|
END), 2)
|
|
|
ELSE 0
|
|
|
@@ -502,6 +508,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
WHERE video_type IN (1, 2)
|
|
|
GROUP BY live_id
|
|
|
) video_duration ON l.live_id = video_duration.live_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ live_id,
|
|
|
+ user_id,
|
|
|
+ COALESCE(SUM(CASE WHEN live_flag = 1 AND replay_flag = 0 THEN COALESCE(online_seconds, 0) ELSE 0 END), 0) +
|
|
|
+ COALESCE(SUM(CASE WHEN live_flag = 0 AND replay_flag = 1 THEN COALESCE(online_seconds, 0) ELSE 0 END), 0) AS total_duration
|
|
|
+ FROM live_watch_user
|
|
|
+ WHERE live_id = #{liveId}
|
|
|
+ GROUP BY live_id, user_id
|
|
|
+ ) user_duration ON l.live_id = user_duration.live_id AND lwu.user_id = user_duration.user_id
|
|
|
LEFT JOIN (
|
|
|
SELECT
|
|
|
live_id,
|