我有一个带有用户ID,视频ID和状态列的表。每次用户观看视频时,它将添加到该列中。我想计算用户观看每个视频的次数,然后显示前10名,并显示为 用户ID,视频ID,X次观看
我试图查找如何执行此操作,但是找不到很好的答案。
我想计算用户观看每个视频多少次,然后显示前10名,并显示为 用户ID,视频ID,X次观看
SELECT streams.Subscriber_ID as User, streams.Video_ID, count(streams) as Views
FROM steams
JOIN streams.Subscriber_ID
ORDER BY count(streams) DESC LIMIT 20;
答案 0 :(得分:0)
您必须GROUP BY
所需的字段才能获得汇总计数。
例如:
模式(MySQL v5.7)
CREATE TABLE test
(
user_id INT,
video_id INT
);
INSERT INTO test VALUES (1, 1), (1, 1), (1, 1), (1, 2), (2, 1), (2, 2), (3, 2), (3, 2), (3, 2), (3, 2);
查询#1
SELECT t.user_id,
t.video_id,
COUNT(*) AS watch
FROM test t
GROUP BY user_id, video_id
ORDER BY watch DESC;
输出
| user_id | video_id | watch |
| ------- | -------- | ----- |
| 3 | 2 | 4 |
| 1 | 1 | 3 |
| 1 | 2 | 1 |
| 2 | 1 | 1 |
| 2 | 2 | 1 |