【发布时间】:2011-06-28 10:54:01
【问题描述】:
我有一个视频网站,其中每个视频都属于一个类别,我想显示每个类别中观看次数最多的视频。
视频点击有自己的表格,每个点击记录 user_id 和 video_id
我正在努力计算点击次数,如果单个用户观看视频十次,它仍然只计算一次点击次数。
谢谢。
【问题讨论】:
我有一个视频网站,其中每个视频都属于一个类别,我想显示每个类别中观看次数最多的视频。
视频点击有自己的表格,每个点击记录 user_id 和 video_id
我正在努力计算点击次数,如果单个用户观看视频十次,它仍然只计算一次点击次数。
谢谢。
【问题讨论】:
你的意思是这样的
SELECT COUNT(DISTINCT(user_id))
FROM video_hits
WHERE video_id = '1826'
它应该给出观看 id 为 1826 视频的用户总数
编辑:我只在 MS SQL 中对此进行了测试,因为我现在正在工作 - 我回家后可以在 MySQL 中检查它,但我认为它是相同的。
【讨论】:
如果一个用户观看一个视频十次,它仍然只计算一次点击。
使用 COUNT(DISTINCT user_id)
我正在苦苦挣扎的部分......
这是否意味着您已经解决了从每个类别中获取热门视频的问题?这是 SQL 中一个更复杂的问题 (the max-concat trick)
【讨论】:
categories 在 videos.category_id = 类别中加入视频。 id JOIN users ON videos.user_id = users.id JOIN views ON videos.id = views.video_id JOIN series ON videos.series_id = series.id GROUP BY categories.id ORDER BY categories.name,点击 DESC LIMIT 6
听起来您正在阻止命中表插入重复记录?您应该这样做,以便您可以执行 select count(id) where user_id = ??和 video_id = ??。这将返回这两个参数在表中出现的次数。
【讨论】: