sql - 如何计算 SQL 中每集的平均时间百分比?
问题描述
我有以下表格:
Episode
-----------------------------------
| Id | Name | Duration | SeasonId |
-----------------------------------
| 1 | .. | 00:54:34 | 1 |
| 2 | .. | 00:49:56 | 1 |
-----------------------------------
Profile
----------------------
| Id | Name | UserId |
----------------------
| 1 | .. | 1 |
| 2 | .. | 1 |
----------------------
WatchHistory
------------------------------------
| ProfileId | EpisodeId | Progress |
------------------------------------
| 1 | 1 | 00:17:17 |
| 2 | 1 | 00:54:34 |
| 1 | 2 | 00:49:56 |
------------------------------------
我想计算每集观看的平均百分比配置文件,但我似乎无法弄清楚如何做到这一点。
对于第 1 集,个人资料 1 的观看率约为 31.7%,个人资料 2 的观看率为 100%,因此第 1 集的平均观看率约为 65.8%。
结果应如下所示:
------------------------------------------------------------------------
| EpisodeId | EpisodeName | EpisodeDuration | PercentageWatchedAverage |
------------------------------------------------------------------------
| 1 | .. | 00:54:34 | 66 |
| 2 | .. | 00:49:56 | 100 |
------------------------------------------------------------------------
我怎样才能完成这个结果?
解决方案
这是一个初学者...... https://dbfiddle.uk/?rdbms=sqlserver_2019&fiddle=12f0a734716d16e666318ec54a705fbd
SELECT
Episode.id,
AvgProgress.seconds * 100.0
/
DATEDIFF(second, 0, Episode.duration)
FROM
Episode
LEFT JOIN
(
SELECT
EpisodeID,
AVG(
DATEDIFF(second, 0, Progress)
)
AS seconds
FROM
WatchHistory
GROUP BY
EpisodeID
)
AS AvgProgress
ON AvgProgress.EpisodeID = Episode.id
推荐阅读
- c# - 使用 Kerberos 和 Npgsql 进行 C# PostGres 身份验证
- haskell - 在 Haskell 函数中提取参数
- python - 使用 BeautifulSoup 中的条件从不同标签中获取值
- javascript - 我如何创建一个季节来快速提出 ntlm 请求?
- webpack - Webpack 5 - 总是在 node_modules 中提取 css/less/scss
- git - 私有 git 服务器: git clone 询问 git@host 的密码
- python - 如何使用 pandas 计算加权数据?
- python - 如何使用熊猫在excel表格中找到相关系数r
- node.js - 如何实现 localStorage 同步器
- swift - Swift:为什么我不能在 init() 之后链接变异函数?