计算每个 content_type 的平均完成率

问题描述 投票:0回答:1

问题是:

每种 content_type 的平均完成率是多少?

带有日期/时间的列是这些标题,我给出了前两行数据作为示例:

事件_id 用户 ID 日期(时间戳) episode_id 内容类型 播放时间(秒) 剧集长度(秒)
iqeq4x84r6x2yxl xw8EF 2016-08-25T08:15:30-05:00 woaqa01 点播 180 200
iqeujzl76pff8 如果TI1 2016-08-25T08:16:31-05:00 eodjdm 点播 260 300

我使用 MS SQL Server。f 我的逻辑是,完成率与

date(timestamp)
列更相关,因为它指示 15:30-05:00。该列中的其余数据均为相同日期“2016-08-25”,但开始时间不同,例如 16:31 / 15:35 / 15:39,但它们都具有相同的结束日期“05:00” '。你究竟如何编写查询来查找该列中这些时间之间的平均值...我之前没有查询过时间戳...或者我完全错了这里...是计算之间的播放时间和剧集长度。

答案是否不太复杂,例如:

SELECT
    content_type,
    AVG(CAST(play_time AS FLOAT) / episode_length) AS avg_completion_rate
FROM
    Audience
GROUP BY
    content_type;

非常感谢您的反馈。谢谢

sql timestamp
1个回答
0
投票

正如@C3roe所说,时间戳和时区与费率无关。

对于完成率,取播放时间的平均值作为运行时间(剧集长度)的百分比,并在整个 content_type 中取平均值。乘以 100 即可得到百分比。

ROUND
如果需要,保留小数点后 N 位。

SELECT
    content_type,
    AVG(SUM([Episode_length(seconds)]) / SUM([play_time(seconds)])) * 100 AS avg_completion_rate
FROM
    Audience
GROUP BY
    content_type;
© www.soinside.com 2019 - 2024. All rights reserved.