|
@@ -197,4 +197,222 @@
|
|
|
</select>
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ <select id="videoInfoListWeek" resultType="cn.com.ctop.toutiao.modules.report.entity.ByteDanceVideoReportDaily">
|
|
|
+ select
|
|
|
+ -- a.material_id as materialId,
|
|
|
+ -- a.account_id as accountId,
|
|
|
+ -- b.auth_name as authName,
|
|
|
+ a.project_id as projectId,
|
|
|
+ a.project_name as projectName,
|
|
|
+ a.advertiser_id as advertiserId,
|
|
|
+ a.advertiser_name as advertiserName,
|
|
|
+ a.stat_datetime as statDatetime,
|
|
|
+ sum(a.cost) as cost, -- 消耗
|
|
|
+ a.signature as signature,
|
|
|
+ a.video_url as videoUrl,
|
|
|
+ '-' as materialDesc,
|
|
|
+ (select info.url from ctop_material_info info where info.code = a.signature limit 1) as url,
|
|
|
+ 1 as appType,
|
|
|
+ sum(a.click) as clickMaterial, -- 点击数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.total_play) != 0
|
|
|
+ then sum(a.play25_feed_break) / sum(a.total_play)
|
|
|
+ else 0 end as play25FeedBreakRate, -- 25%进度播放率
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.total_play) != 0
|
|
|
+ then sum(a.play_over) / sum(a.total_play)
|
|
|
+ else 0 end as playOverRate, -- 整体完播率
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.click) != 0
|
|
|
+ then sum(a.convert_material) / sum(a.click)
|
|
|
+ else 0 end as convertRate, -- 转化率 转化数/点击数*100% !
|
|
|
+ sum(a.active) as active, -- 应用下载-激活
|
|
|
+ sum(a.download_finish) as downloadFinish, -- 应用下载-安卓下载完成
|
|
|
+ sum(a.download_start) as downloadStart, -- 应用下载-安卓下载开始
|
|
|
+ sum(a.install_finish) as installFinish, -- 应用下载-安卓安装完成
|
|
|
+ sum(a.register) as register, -- 应用下载-注册
|
|
|
+ sum(a.pay_count) as payCount, -- 应用下载-付费数
|
|
|
+ sum(a.form) as form, -- 表单提交数
|
|
|
+ sum(a.total_play) as totalPlay, -- 视频-总播放
|
|
|
+ sum(a.valid_play) as validPlay, -- 视频-有效播放
|
|
|
+ sum(a.wifi_play) as wifiPlay, -- 视频-wifi播放
|
|
|
+ sum(a.play25_feed_break) as play25FeedBreak, -- 视频-播放25%进度总数
|
|
|
+ sum(a.play50_feed_break) as play50FeedBreak, -- 视频-播放50%进度总数
|
|
|
+ sum(a.play75_feed_break) as play75FeedBreak, -- 视频-播放75%进度总数
|
|
|
+ sum(a.play100_feed_break) as play100FeedBreak, -- 视频-播放100%进度总数
|
|
|
+ sum(a.share_material) as shareMaterial, -- 互动数据-分享数
|
|
|
+ sum(a.follow) as follow, -- 互动数据-新增关注数
|
|
|
+ sum(a.next_day_open) as nextDayOpen, -- 次留数
|
|
|
+ case
|
|
|
+ when sum(a.active) != 0
|
|
|
+ then sum(a.next_day_open) / sum(a.active)
|
|
|
+ else 0 end as nextDayOpenRate, -- 次留率 = 次留数/激活数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.next_day_open) != 0
|
|
|
+ then sum(a.cost) / sum(a.next_day_open)
|
|
|
+ else 0 end as nextDayOpenCost, -- 次留成本 = 消耗/次留数
|
|
|
+
|
|
|
+ sum(a.active_pay_amount) as activePayAmount, -- 应用下载广告数据-付费次数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.valid_play) != 0
|
|
|
+ then sum(a.cost) / sum(a.valid_play)
|
|
|
+ else 0 end validPlayCost, -- 视频数据-有效播放成本 计算公式:总花费/有效播放数,当天数据可能会有波动,次日早8点后稳定。
|
|
|
+ sum(a.convert_material) as convertMaterial, -- 转化数据-转化数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.active_pay_amount) != 0
|
|
|
+ then sum(a.cost) / sum(a.active_pay_amount)
|
|
|
+ else 0 end as activePayCost, -- 应用下载广告数据-付费成本 = 消耗/付费次数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.click) != 0
|
|
|
+ then sum(a.cost) / sum(a.click)
|
|
|
+ else 0 end as cpc, -- 平均点击单价
|
|
|
+ sum(a.play_over_rate) as playOverRate, -- 视频数据-播完率
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.show_material) != 0
|
|
|
+ then sum(a.click) / sum(a.show_material)
|
|
|
+ else 0 end as ctr, -- 展现数据-点击率 广告被点击的次数占展示次数的百分比。计算方法:点击数/展示数*100%
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.show_material) != 0
|
|
|
+ then sum(a.cost) / sum(a.show_material) * 1000
|
|
|
+ else 0 end cpm, -- 平均千次展现费用 广告平均每一千次展现所付出的费用,计算公式是:总花费/展示数*1000。
|
|
|
+ sum(a.wifi_play_rate) as wifiPlayRate, -- 视频数据-WiFi播放占比
|
|
|
+ sum(a.like_material) as likeMaterial, -- 互动数据-点赞数
|
|
|
+
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.active) != 0
|
|
|
+ then sum(a.cost) / sum(a.active)
|
|
|
+ else 0 end activeCost, -- 应用下载广告数据-激活成本 计算方式:总花费/激活数。
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.game_addiction) != 0
|
|
|
+ then sum(a.cost) / sum(a.game_addiction)
|
|
|
+ else 0 end as gameAddictionCost, -- 应用下载广告数据-关键行为成本 广告主为每个有APP内关键行为的用户所付出的成本,计算公式是总花费/关键行为数。当天数据可能会有波动,次日早8点后稳定。
|
|
|
+ sum(a.game_addiction) as gameAddiction, -- 应用下载广告数据-关键行为数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.click) != 0
|
|
|
+ then sum(a.active) / sum(a.click)
|
|
|
+ else 0 end as activeRate, -- 应用下载广告数据-激活率 计算方式:激活数/点击数*100%
|
|
|
+
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.active) != 0
|
|
|
+ then sum(a.game_addiction) / sum(a.active)
|
|
|
+ else 0 end as gameAddictionRate, -- 应用下载广告数据-关键行为率 关键行为用户占激活用户的比例
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.active) != 0
|
|
|
+ then sum(a.register) / sum(a.active)
|
|
|
+ else 0 end as activeRegisterRate, -- 应用下载广告数据-注册率 注册用户占激活用户的比例
|
|
|
+
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.download_finish) != 0
|
|
|
+ then sum(a.cost) / sum(a.download_finish)
|
|
|
+ else 0 end as downloadFinishCost, -- 应用下载广告数据-安卓下载完成成本 计算方式:总花费/安卓下载完成数。
|
|
|
+
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.register) != 0
|
|
|
+ then sum(a.cost) / sum(a.register)
|
|
|
+ else 0 end as activeRegisterCost, -- 应用下载广告数据-注册成本 总花费/注册数,当天数据可能会有波动,次日早8点后稳定。
|
|
|
+ sum(a.show_material) as showMaterial, -- 展现数据-展示数
|
|
|
+
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.download_start) != 0
|
|
|
+ then sum(a.download_finish) / sum(a.download_start)
|
|
|
+ else 0 end as downloadFinishRate, -- 应用下载广告数据-安卓下载完成率 计算方式:安卓下载完成数/安卓下载开始数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.download_finish) != 0
|
|
|
+ then sum(a.install_finish) / sum(a.download_finish)
|
|
|
+ else 0 end as installFinishRate, -- 应用下载广告数据-安卓安装完成率 计算方式:安卓安装完成数/安卓下载完成数
|
|
|
+ sum(a.play_over) as playOver, -- 完播数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.download_start) != 0
|
|
|
+ then sum(a.cost) / sum(a.download_start)
|
|
|
+ else 0 end as downloadStartCost, -- 应用下载广告数据-安卓下载开始成本 计算方法:总花费/安卓下载开始数。
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.show_material) != 0
|
|
|
+ then sum(a.valid_play) / sum(a.show_material)
|
|
|
+ else 0 end as validPlayRate, -- 视频数据-有效播放率 有效播放数/展示数
|
|
|
+ case
|
|
|
+ when sum(a.valid_play) != 0
|
|
|
+ then sum(a.average_play_time_per_play*a.valid_play)/sum(a.valid_play)
|
|
|
+ else 0 end as averagePlayTimePerPlay, -- 视频数据-平均单次播放时长
|
|
|
+ case
|
|
|
+ when sum(a.convert_material) != 0
|
|
|
+ then sum(a.cost) / sum(a.convert_material)
|
|
|
+ else 0 end as convertCost, -- 转化数据-转化成本=总花费/转化数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.install_finish) != 0
|
|
|
+ then sum(a.cost) / sum(a.install_finish)
|
|
|
+ else 0 end as installFinishCost, -- 应用下载广告数据-安卓安装完成成本 计算方式:总花费/安卓安装完成数
|
|
|
+
|
|
|
+ case
|
|
|
+ when sum(a.click) != 0
|
|
|
+ then sum(a.download_start) / sum(a.click)
|
|
|
+ else 0 end as downloadStartRate -- 应用下载广告数据-安卓下载开始率 计算方法:安卓下载开始数/点击数
|
|
|
+
|
|
|
+ from ctop_bytedance_video_report_daily a
|
|
|
+ left join (select material_id,clip_id,shot_id,plan_id,plane_id from ctop_material_ascription group by material_id) f on a.signature = f.material_id
|
|
|
+ where stat_datetime >= #{startDate}
|
|
|
+ and stat_datetime <= #{endDate}
|
|
|
+
|
|
|
+ <if test=" role != 'admin' ">
|
|
|
+ and a.company_id = #{companyId}
|
|
|
+ </if>
|
|
|
+
|
|
|
+ and f.material_id is not null
|
|
|
+
|
|
|
+ <choose> <!-- 编导、剪辑、拍摄、平面只能查看自己本职工作制作的视频,设计组长和管理员能查看所有的-->
|
|
|
+ <when test="role == 'plan'">
|
|
|
+ and f.plan = #{userId}
|
|
|
+ </when>
|
|
|
+ <when test="role == 'clip'">
|
|
|
+ and f.clip = #{userId}
|
|
|
+ </when>
|
|
|
+ <when test="role == 'shot' ">
|
|
|
+ and f.shot = #{userId}
|
|
|
+ </when>
|
|
|
+ <when test="role == 'plane' or role == 'planeLeader' ">
|
|
|
+ and f.plan = #{userId}
|
|
|
+ </when>
|
|
|
+ <when test="role == 'admin' or role == 'designTeamLeader'">
|
|
|
+ and 1=1
|
|
|
+ </when>
|
|
|
+ <otherwise>F
|
|
|
+ and a.id = 0
|
|
|
+ </otherwise>
|
|
|
+ </choose>
|
|
|
+
|
|
|
+ <if test="signature != null and signature != '' ">
|
|
|
+ and a.signature = #{signature}
|
|
|
+ </if>
|
|
|
+
|
|
|
+ group by a.signature
|
|
|
+ <if test="cost != null">
|
|
|
+ having sum(a.cost) >= #{cost}
|
|
|
+ </if>
|
|
|
+ order by sum(a.cost)
|
|
|
+ </select>
|
|
|
+
|
|
|
+
|
|
|
</mapper>
|