创建表:
1 | CREATE TABLE `test_user_scores` ( |
插入数据
1 | INSERT INTO `test`.`test_user_scores` (`id`, `user_id`, `group_id`, `scores`) |
MySQL 版本:
1 | SELECT version(); -- 8.0.25 |
- 取每人每组最高分
1 | SELECT user_id,group_id, max(scores) as max_scores |
- 取每人top3分数
1 | SELECT user_id,scores,row_num |
- 取每人每组top3分数
1 | SELECT user_id,group_id,scores,row_num1,row_num2 |
- 使用窗口函数实现
1 | SELECT row_number()over(partition by group_id,user_id order by scores desc) as rn,user_Id,group_id,scores |
参考资料: