分组后取每组的前几
条评论这是一个我遇到的需求啊,要做一个简单的报表。就是找出每一个城市的分数最高的前10。
首先我第一想到的就是分组,分组之后取前几嘛。但是这有个问题,要说的sql的单值原则。group之后的,对于分组以外的列都必须是明确唯一的,比如你可以group之后,取每组的最大或最小,但是你不能取每组中的一个list。
首先这个group这个解决方案从一开始就是错的,就导致陷入死胡同。最后解决是通过开窗函数解决,记录一下。
方案一(推荐)
1 | SELECT city,score,rank |
方案二
1 | SELECT * FROM cs c |
- 本文链接:https://www.ofcoder.com/2019/07/14/sql/%E5%88%86%E7%BB%84%E5%90%8E%E5%8F%96%E6%AF%8F%E7%BB%84%E7%9A%84%E5%89%8D%E5%87%A0/
- 版权声明:Copyright © 并发笔记 - ofcoder.com. Author by far.
分享