mysql - 查找sql中每个不同行的最大计数
问题描述
假设我有一个如下所示的表格:
Genre | User_id
Animations | 33
Animations | 35
Animations | 33
Thriller | 39
Thriller | 35
Thriller | 35
Thriller | 35
这张表显示了一个电影类型和每个评论过该类型电影的用户。(Animations,33) 表示 user_id 为 33 的用户对动画电影进行了评分。我想做的是为用户拥有的每个类型查找对该类型的电影评分最多(假设只有一部)以及有多少评分。
所以在上面的例子中,解决方案是:
Animations | 33 | 2
Thriller | 35 | 3
如何使用 sql 有效地完成这项工作?任何帮助将不胜感激
提前致谢
解决方案
在统计学中,这称为模式。您可以使用聚合和窗口函数:
select gu.*
from (select genre, user_id, count(*) as cnt,
row_number() over (partition by genre order by count(*) desc) as seqnum
from t
group by genre, user_id
) gu
where seqnum = 1;
推荐阅读
- typescript - 是否可以使用 TypeScript 中的索引访问器访问类属性
- trace - 如何在 qemu 中跟踪文件打开事件?
- java - kafka 流序列化错误:java.lang.String 无法转换为 [Byte],使用 json 数据时出现问题
- zsh - ohmyzsh:找不到命令:松露 | 无法通过松露迁移
- ios - 如何在tableview编辑模式下滑动删除?(迅速)
- c++ - 为什么 std::declval 不是 constexpr?
- javascript - 为什么这个片段给了我不正确的行号?
- javascript - 获取数组中计数最多的前三个反应
- r - str_replace_all 错误地赋值
- python - Python:如何根据坐标将粒子分成不同的簇?