如何对行进行分组,在SQL Oracle中用数字 - ext与其他列选择一个?

时间:2015-09-22 07:38:20

标签: sql oracle

我遇到了编写查询的问题,该查询会在列中收集组,然后按数字选择其中一个。 一个好人(@sstan)给了我这个:

select your_col
  from (select your_col,
               row_number() over (order by your_col) as rn
          from your_table
         group by your_col)
 where rn = 2

它有效。但是,我的查询似乎需要考虑其他列。现在,它看起来像这样:

select MAINCOL, sum(some_col+other_col) as together_col, count(another_col)

from my_table

where date_col >= next_day(trunc(sysdate), 'MONDAY') - 14
and date_col < next_day(trunc(sysdate), 'MONDAY') - 7

group by  MAINCOL, other_col, together_col
order by MAINCOL

因此,挑战是使用以下内容扩展上层查询。虽然我无法使它工作,但看起来很简单..

2 个答案:

答案 0 :(得分:0)

您可以尝试使用内部表别名

SELECT your_col,rn.your_col,rn.your_col2,rn.your_col3
FROM(select your_col,your_col2,your_col3,row_number() over (order by your_col) 
      from your_table group by your_col)as rn where rn = 2

答案 1 :(得分:0)

知道了! 当然,在Stack的帮助下。

select t.*
from (select MAINCOL, col1, col2, col3, col4, DENSE_RANK()OVER(ORDER BY MAINCOL) GROUPID
      from tab_1
      group by MAINCOL, col1, col2
     ) t
where GROUPID = 1;