如何用单条SQL查询从仅含userId和videoId的表获取浏览量与独立浏览量?
没问题!一条SQL就能轻松搞定这两个统计需求,我给你掰扯清楚怎么弄:
先搞懂两个指标的统计逻辑
- 总浏览量:说白了就是所有观看记录的总数,直接用
COUNT(*)统计表的总行数就行——毕竟每一行都对应一次用户点开视频的行为。 - 独立浏览量:这里得看你具体要统计啥,常见有两种情况:
- 如果是想知道有多少不同的用户看过视频(独立用户数),那就用
COUNT(DISTINCT userId),把重复的用户ID去重后统计; - 如果是想知道有多少不同的视频被人看过(独立视频数),就换成
COUNT(DISTINCT videoId),去重统计视频ID。
- 如果是想知道有多少不同的用户看过视频(独立用户数),那就用
直接能用的SQL示例
假设你的表名叫user_video_watch_history,把表名换成你实际的就行:
SELECT COUNT(*) AS total_views, -- 总浏览量 COUNT(DISTINCT userId) AS unique_user_views, -- 独立用户浏览量 COUNT(DISTINCT videoId) AS unique_video_views -- 独立视频被浏览量 FROM user_video_watch_history;
你要是只需要总浏览量和其中一个独立指标,删掉多余的字段就行。而且这个查询只扫一次表,效率拉满,完全符合单条SQL的要求。
内容的提问来源于stack exchange,提问作者AskYous
相关产品推荐
相关产品推荐

