【发布时间】:2011-07-02 07:19:20
【问题描述】:
我有一些数据格式如下:
Lane Series
1 680
1 685
1 688
2 666
2 425
2 775
...
我想获取每条车道上最高的 n 系列(为了这个例子,假设是 2,但它可能不止于此)
所以输出应该是:
Lane Series
1 688
1 685
2 775
2 666
获得每个车道最高的系列很容易,但我似乎无法找到获得最高 2 个结果的方法。
我使用带有 GROUP BY 的 MAX 聚合函数来获取 MAX,但是没有像 SQL Server 中那样的“TOP N”函数,并且使用 ORDER BY... LIMIT 只返回总体上最高的 N 个结果,而不是每个通道。
由于我使用 JAVA 应用程序,我自己编写代码来查询数据库并选择 N 是多少,我可以执行循环并使用 LIMIT 并循环遍历每个通道,每次都进行不同的查询,但我想了解如何使用 MySQL 来完成。
【问题讨论】:
-
这在 SQL Server 中使用 Partition/rank 非常简单。这是关于如何使用 MySQL 实现相同功能的类似问题:stackoverflow.com/questions/3333665/mysql-rank-function
标签: mysql greatest-n-per-group