如何选择特定列具有最高值而另一列具有特定值的行

时间:2019-10-16 14:06:46

标签: sql oracle greatest-n-per-group

我希望从满足以下约束的表中选择以下行:

我一直在搞弄自己的联接(如果在子查询中idb = x,请选择最大版本),但是没有运气

例如:

idb = x 如果特定ida的va是该ida的最大va,而idb是x,则将其包括在内

ida     |    idb     |     va
--------------------------------
abc          x             1
abc          y             2
abc          x             3
def          x             1
xyz          x             1
xyz          x             2
xyz          z             3

结果:

ida     |    idb     |     va
--------------------------------
abc          x             3
def          x             1

对于上一个示例,

包含

abc是因为va(3)的最高版本位于idb = x

的行中 包含

def是因为va(1)的最高版本位于idb = x

的行中

xyz不包括在内,因为xyz的最高版本(va = 3)的值为idb = z

2 个答案:

答案 0 :(得分:2)

如果我的理解正确,您希望其中给定extension Array: Decodable where Element: Decodable {}的最高版本的ida值为idb的行。

如果是这样:

'x'

答案 1 :(得分:0)

最简单的代码是:

select t.ida, t.idb, t.va
  from your_table t
 where t.idb = 'x'
   and t.va = (select max(sub_qry.va) 
                 from your_table sub_qry
                where sub_qry.ida = t.ida)