2017-08-01 91 views
0

嗨我正在处理一个特定的情况下,我需要找到最小值和同一记录的另一列值时,最小值可以重复SQL查找最小列和其他列时,如果存在重复最小列

Table A 

    ColumnA ColumnB ColumnC 
    1   10  07/21/2017 
    1   9  07/22/2017 
    1   9  07/23/2017 
    2   20 07/23/2017 
    2   20 07/24/2017 
    3   15  07/21/2017 
    3   15  07/21/2017 

The output should be 

ColumnD COlumnE ColumnF 
1   9  07/23/2017 
2   20  07/24/2017 
3   15  07/21/2017 

在查找最小值及其最新日期。

回答

0

你会做到这一点与聚集,但与row_number()

select t.* 
from (select t.*, row_number() over (partition by D order by B) as seqnum 
     from t 
    ) t 
where seqnum = 1; 
+0

这项工作是否适用于平均功能? – TechJump

+0

@TechJump。 。 。我想不出一个合理的方法来使用'avg()'来获取任何东西的最小值。 –

0

因为你的样品结果是columnB和columnC的MAX最低,你可以使用下面的SQL

SELECT t.* 
    FROM (SELECT columnA, 
       columnB, 
       columnC, 
       row_number() OVER (PARTITION BY columnA ORDER BY columnB, MAX(columnC) DESC) rmin 
      FROM agg_dur 
     GROUP BY columnA, 
        columnB, 
        columnC 
     ) t 
WHERE t.rmin = 1 

结果

columnA columnB columnC  rmin 
1   9   2017-07-23 1 
2   20   2017-07-24 1 
3   15   2017-07-21 1 
相关问题