|
@@ -283,58 +283,59 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
<!-- 查询直播间统计数据 -->
|
|
<!-- 查询直播间统计数据 -->
|
|
|
<select id="selectLiveDataStatistics" resultType="com.fs.live.vo.LiveDataStatisticsVo">
|
|
<select id="selectLiveDataStatistics" resultType="com.fs.live.vo.LiveDataStatisticsVo">
|
|
|
SELECT
|
|
SELECT
|
|
|
- COUNT(DISTINCT lwu.user_id) AS totalViewers,
|
|
|
|
|
- COUNT(DISTINCT CASE WHEN l.live_type = 1 THEN lwu.user_id END) AS liveViewers,
|
|
|
|
|
- COUNT(DISTINCT CASE WHEN l.live_type = 3 THEN lwu.user_id END) AS playbackViewers,
|
|
|
|
|
- COALESCE(AVG(CASE WHEN l.live_type = 1 THEN lwu.online_seconds END), 0) AS liveAvgDuration,
|
|
|
|
|
- COALESCE(AVG(CASE WHEN l.live_type = 3 THEN lwu.online_seconds END), 0) AS playbackAvgDuration,
|
|
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT( lwu.user_id) AS totalViewers,
|
|
|
|
|
+ COUNT( CASE WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 THEN lwu.user_id END) AS liveViewers,
|
|
|
|
|
+ COUNT( CASE WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 THEN lwu.user_id END) AS playbackViewers,
|
|
|
|
|
+ COALESCE(AVG(CASE WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 THEN lwu.online_seconds END), 0) AS liveAvgDuration,
|
|
|
|
|
+ COALESCE(AVG(CASE WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 THEN lwu.online_seconds END), 0) AS playbackAvgDuration,
|
|
|
|
|
+ COUNT( CASE
|
|
|
|
|
+ WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS totalCompletedCourses,
|
|
END) AS totalCompletedCourses,
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN l.live_type = 1 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT( CASE
|
|
|
|
|
+ WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS liveCompletedCourses,
|
|
END) AS liveCompletedCourses,
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN l.live_type = 3 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT( CASE
|
|
|
|
|
+ WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS playbackCompletedCourses,
|
|
END) AS playbackCompletedCourses,
|
|
|
COALESCE((
|
|
COALESCE((
|
|
|
- SELECT SUM(pay_price)
|
|
|
|
|
- FROM live_order
|
|
|
|
|
- WHERE live_id IN
|
|
|
|
|
|
|
+ SELECT SUM( pay_price)
|
|
|
|
|
+ FROM live_order
|
|
|
|
|
+ WHERE live_id IN
|
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
#{liveId}
|
|
#{liveId}
|
|
|
</foreach>
|
|
</foreach>
|
|
|
AND is_pay = '1'
|
|
AND is_pay = '1'
|
|
|
), 0) AS gmv,
|
|
), 0) AS gmv,
|
|
|
COALESCE((
|
|
COALESCE((
|
|
|
- SELECT COUNT(DISTINCT user_id)
|
|
|
|
|
- FROM live_order
|
|
|
|
|
- WHERE live_id IN
|
|
|
|
|
- <foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
|
|
- #{liveId}
|
|
|
|
|
- </foreach>
|
|
|
|
|
- AND is_pay = '1'
|
|
|
|
|
|
|
+ select sum(acs.paid) from (SELECT COUNT(DISTINCT user_id) as paid
|
|
|
|
|
+ FROM live_order
|
|
|
|
|
+ WHERE live_id IN
|
|
|
|
|
+ <foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
|
|
+ #{liveId}
|
|
|
|
|
+ </foreach>
|
|
|
|
|
+ AND is_pay = '1'
|
|
|
|
|
+ group by live_id
|
|
|
|
|
+ ) acs
|
|
|
), 0) AS paidUsers,
|
|
), 0) AS paidUsers,
|
|
|
COALESCE((
|
|
COALESCE((
|
|
|
- SELECT COUNT(DISTINCT order_id)
|
|
|
|
|
- FROM live_order
|
|
|
|
|
- WHERE live_id IN
|
|
|
|
|
|
|
+ SELECT COUNT(DISTINCT order_id)
|
|
|
|
|
+ FROM live_order
|
|
|
|
|
+ WHERE live_id IN
|
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
#{liveId}
|
|
#{liveId}
|
|
|
</foreach>
|
|
</foreach>
|
|
|
AND is_pay = '1'
|
|
AND is_pay = '1'
|
|
|
), 0) AS paidOrders,
|
|
), 0) AS paidOrders,
|
|
|
COALESCE((
|
|
COALESCE((
|
|
|
- SELECT COUNT(DISTINCT order_id)
|
|
|
|
|
- FROM live_order
|
|
|
|
|
- WHERE live_id IN
|
|
|
|
|
|
|
+ SELECT COUNT(DISTINCT order_id)
|
|
|
|
|
+ FROM live_order
|
|
|
|
|
+ WHERE live_id IN
|
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
#{liveId}
|
|
#{liveId}
|
|
|
</foreach>
|
|
</foreach>
|
|
|
- AND is_pay = '1'
|
|
|
|
|
), 0) AS salesCount
|
|
), 0) AS salesCount
|
|
|
FROM live l
|
|
FROM live l
|
|
|
LEFT JOIN live_watch_user lwu ON l.live_id = lwu.live_id
|
|
LEFT JOIN live_watch_user lwu ON l.live_id = lwu.live_id
|
|
@@ -359,22 +360,22 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
l.status AS status,
|
|
l.status AS status,
|
|
|
l.start_time AS startTime,
|
|
l.start_time AS startTime,
|
|
|
l.finish_time AS finishTime,
|
|
l.finish_time AS finishTime,
|
|
|
- COUNT(DISTINCT lwu.user_id) AS totalViewers,
|
|
|
|
|
- COUNT(DISTINCT CASE WHEN l.live_type = 1 THEN lwu.user_id END) AS liveViewers,
|
|
|
|
|
- COUNT(DISTINCT CASE WHEN l.live_type = 3 THEN lwu.user_id END) AS playbackViewers,
|
|
|
|
|
- COALESCE(AVG(CASE WHEN l.live_type = 1 THEN lwu.online_seconds END), 0) AS liveAvgDuration,
|
|
|
|
|
- COALESCE(AVG(CASE WHEN l.live_type = 3 THEN lwu.online_seconds END), 0) AS playbackAvgDuration,
|
|
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT(1) AS totalViewers,
|
|
|
|
|
+ COUNT(CASE WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 THEN lwu.user_id END) AS liveViewers,
|
|
|
|
|
+ COUNT(CASE WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 THEN lwu.user_id END) AS playbackViewers,
|
|
|
|
|
+ COALESCE(AVG(CASE WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 THEN lwu.online_seconds END), 0) AS liveAvgDuration,
|
|
|
|
|
+ COALESCE(AVG(CASE WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 THEN lwu.online_seconds END), 0) AS playbackAvgDuration,
|
|
|
|
|
+ COUNT(CASE
|
|
|
|
|
+ WHEN lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS totalCompletedCourses,
|
|
END) AS totalCompletedCourses,
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN l.live_type = 1 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT(CASE
|
|
|
|
|
+ WHEN lwu.live_flag = 1 and lwu.replay_flag = 0 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS liveCompletedCourses,
|
|
END) AS liveCompletedCourses,
|
|
|
- COUNT(DISTINCT CASE
|
|
|
|
|
- WHEN l.live_type = 3 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
- THEN lwu.user_id
|
|
|
|
|
|
|
+ COUNT(CASE
|
|
|
|
|
+ WHEN lwu.live_flag = 0 and lwu.replay_flag = 1 AND lwu.online_seconds >= COALESCE(video_duration.total_duration, 0) AND video_duration.total_duration > 0
|
|
|
|
|
+ THEN lwu.user_id
|
|
|
END) AS playbackCompletedCourses,
|
|
END) AS playbackCompletedCourses,
|
|
|
COALESCE(order_stats.gmv, 0) AS gmv,
|
|
COALESCE(order_stats.gmv, 0) AS gmv,
|
|
|
COALESCE(order_stats.paidUsers, 0) AS paidUsers,
|
|
COALESCE(order_stats.paidUsers, 0) AS paidUsers,
|
|
@@ -389,21 +390,20 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
|
GROUP BY live_id
|
|
GROUP BY live_id
|
|
|
) video_duration ON l.live_id = video_duration.live_id
|
|
) video_duration ON l.live_id = video_duration.live_id
|
|
|
LEFT JOIN (
|
|
LEFT JOIN (
|
|
|
- SELECT
|
|
|
|
|
|
|
+ SELECT
|
|
|
live_id,
|
|
live_id,
|
|
|
- SUM(pay_price) AS gmv,
|
|
|
|
|
- COUNT(DISTINCT user_id) AS paidUsers,
|
|
|
|
|
- COUNT(DISTINCT order_id) AS paidOrders,
|
|
|
|
|
|
|
+ SUM( case when is_pay = '1' then pay_price else 0 end) AS gmv,
|
|
|
|
|
+ COUNT(distinct CASE WHEN is_pay = '1' THEN user_id END) AS paidUsers,
|
|
|
|
|
+ sum(CASE WHEN is_pay = '1' THEN 1 else 0 END) AS paidOrders,
|
|
|
COUNT(DISTINCT order_id) AS salesCount
|
|
COUNT(DISTINCT order_id) AS salesCount
|
|
|
FROM live_order
|
|
FROM live_order
|
|
|
- WHERE is_pay = '1'
|
|
|
|
|
GROUP BY live_id
|
|
GROUP BY live_id
|
|
|
) order_stats ON l.live_id = order_stats.live_id
|
|
) order_stats ON l.live_id = order_stats.live_id
|
|
|
WHERE l.live_id IN
|
|
WHERE l.live_id IN
|
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
<foreach collection="liveIds" item="liveId" open="(" separator="," close=")">
|
|
|
#{liveId}
|
|
#{liveId}
|
|
|
</foreach>
|
|
</foreach>
|
|
|
- GROUP BY l.live_id, l.live_name, l.live_type, l.status, l.start_time, l.finish_time,
|
|
|
|
|
|
|
+ GROUP BY l.live_id, l.live_name, l.live_type, l.status, l.start_time, l.finish_time,
|
|
|
order_stats.gmv, order_stats.paidUsers, order_stats.paidOrders, order_stats.salesCount
|
|
order_stats.gmv, order_stats.paidUsers, order_stats.paidOrders, order_stats.salesCount
|
|
|
ORDER BY l.start_time DESC
|
|
ORDER BY l.start_time DESC
|
|
|
</select>
|
|
</select>
|