按列2获取column1组的最高'n'计数

时间:2017-10-25 19:31:44

标签: sql oracle

我的桌子

public String getVersionName(Context ctx){
    try {
    return ctx.getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
    } catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
        return "";
    }
}

我想通过column2获得column1组的前三名

    column1 column2
    1       10/05/2015
    2       10/05/2015
    3       05/11/2017
    4       06/09/2017
    5       07/10/2017
...
...
1000        07/06/2017

我可以根据column2获取查询以获取column1的计数。如何获得前n行?

count(column1) column2

20              10/05/2015
10              05/11/2017
8               07/06/2017

2 个答案:

答案 0 :(得分:1)

来源:https://oracle-base.com/articles/misc/top-n-queries

(也许: - 不确定,手边没有oracle)

SELECT c, c2
FROM (
    select 
       count(*) c, 
       column2 c2, 
       DENSE_RANK() OVER (Order by count(*) DESC) val_rank 
    from table1 
    group by column2
) 
WHERE val_rank <= 5

密集等级应该是你需要的。它将为每个结果分配一个等级,相同的等级到相同的结果,并且计算的等级没有间隙,因此将其限制为5应该可以解决问题。

答案 1 :(得分:0)

如果是oracle,您可以在where子句中使用关键字where rownum < 4

所以在你的查询中添加

FilterCollectionCell

如果你想显示前3个结果