基于另一个表获取一个表的计数和总和



>我有 3 个 SQLite 表:

渠道

channelId triad
1         1
2         1
3         0

视频

channelId videoId topic
1         xx      1
1         yy      0
2         pp      0
3         kk      1

评论

commentId replyId videoId sentiment
NULL      er41     xx      -3
clxpo     NULL     kk      0.05
clutz     NULL     yy      2.38
NULL      edg15    xx      1.7
clopq     NULL     pp      1
dkt2      NULL     kk      0.95

对于 triad = 1 的每个频道,我需要知道主题 = 1 的频道视频的情绪总和以及该频道的评论数量。

键是:

channel.channelId = video.channelId

video.videoId = comment.videoId

最终结果应该是:

channelId sum(sentiment) count(number of comments) triad topic
1         -1,3           2                         1     1

如何链接这 3 个表以获得所需的结果?

这是一个简单的 3 向合并,带有一些过滤功能,将其限制为仅具有triadtopic为 1 的行,按channelid分组:

SELECT ch.channelid
, sum(co.sentiment) AS sum_sentiment
, count(*) AS num_comments
FROM channel AS ch
JOIN video AS v ON ch.channelid = v.channelid
JOIN comment AS co ON v.videoid = co.videoid
WHERE ch.triad = 1 AND v.topic = 1
GROUP BY ch.channelid
ORDER BY ch.channelid;

这给了

channelid   sum_sentiment  num_comments
----------  -------------  ------------
1           -1.3           2           

如果表中有很多行,请使用 sqlite3 命令行工具的 .expert 命令来确定应为优化的执行计划添加哪些索引。

相关内容

  • 没有找到相关文章

最新更新