如何创建一个查询,计算两列中的值一起出现多少次?

时间:2019-06-05 15:41:23

标签: mysql sql count

我有一个带有用户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;

1 个答案:

答案 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     |

View on DB Fiddle