如何在满足特定条件的许多人中获得第一排?

时间:2014-03-27 09:13:09

标签: sql oracle oracle11g

假设我有一个如下表:

          COL_1                         COUNT_COL_1
          --------------------      ---------------
          rec_1                                 1
          rec_2                                 2
          rec_3                                 5
          rec_4                                 3
          rec_5                                 2
          rec_6                                 5

现在我的要求是检查COUNT_COL_1中的最大值并获取COL_1中的相应值。如果COL_1中的多个值满足这个条件(在这种情况下'rec_3'和'rec_6'都有最大计数5),那么我必须选择COL_1中的第一个值(所以在这种情况下,我应该获取'rec_3',因为它是'rec_3'和'rec_5'中的第一个)。我怎样才能做到这一点?

提前致谢。

2 个答案:

答案 0 :(得分:1)

 SELECT * FROM 
    ( SELECT COL_1 
      FROM test
      ORDER BY COUNT_COL_1 desc,COL_1 asc
    )z
 WHERE ROWNUM=1

SQL Fiddle Demo

答案 1 :(得分:0)

你需要一个由count(降序)和打破平局值排序的内部查询;然后是一个只选择第一个值的外部查询:

select col_1 from (
  select col_1, count(*)
  from t42
  group by col_1
  order by count(*) desc, col_1
)
where rownum = 1;

COL_1    
----------
rec_3       

SQL Fiddle