题解 | 各个视频的平均完播率

SELECT video_id, ROUND(cy/ca,3) as avg_comp_play_rate
FROM(
SELECT logt.video_id as video_id, SUM(IF(TIMESTAMPDIFF(SECOND, logt.start_time, logt.end_time) >= infot.duration, 1, 0)) OVER(PARTITION BY logt.video_id ORDER BY logt.video_id) as cy, COUNT(logt.video_id) OVER(PARTITION BY logt.video_id ORDER BY logt.video_id) as ca
FROM tb_user_video_log as logt
INNER JOIN tb_video_info as infot
ON logt.video_id = infot.video_id
WHERE YEAR(logt.start_time)="2021"
) as re
GROUP BY video_id, ROUND(cy/ca,3)
ORDER BY ROUND(cy/ca,3) DESC

全部评论

相关推荐

WebSocket是一种在Web应用程序中实现实时双向通信的技术。它提供了一种持久连接,允许服务器与客户端之间进行双向数据传输。与传统的HTTP请求/响应模型不同,WebSocket允许服务器主动向客户端发送消息,而不需要客户端发起请求。要在Web应用程序中使用WebSocket进行实时通信,需要执行以下步骤:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=b48bebe08e474db8b80b853b12bafd48创建一个WebSocket对象:使用JavaScript的WebSocket构造函数创建一个WebSocket对象,指定要连接的服务器URL。例如:var socket = new WebSocket("ws://example.com/socket-server");监听WebSocket事件:使用WebSocket对象的事件监听器来处理WebSocket的各种事件,例如onopen、onmessage、onclose和onerror。这些事件将在WebSocket状态变化、接收到消息、关闭连接或发生错误时被触发。建立连接:一旦创建了WebSocket对象,通过调用其open()方法建立与服务器的WebSocket连接。当连接建立成功时,onopen事件将被触发。发送和接收消息:使用WebSocket对象的send()方法向服务器发送消息,消息可以是字符串或其他数据类型。服务器接收到消息后,可以使用WebSocket对象的onmessage事件来处理。关闭连接:当需要终止WebSocket连接时,可以调用WebSocket对象的close()方法。服务器会收到一个关闭请求,如果确定关闭连接,会发送一个关闭信号给客户端并触发onclose事件。通过使用WebSocket,Web应用程序可以实现实时的双向通信,适用于聊天应用、实时通知、实时更新和协同编辑等场景。#ai智能作图#
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务