问题是:
每种 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;
非常感谢您的反馈。谢谢
正如@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;