oracle - sql查询从每个基数中选择max

时间:2014-03-17 13:34:26

标签: sql oracle oracle11g oracle-sqldeveloper

我正在尝试解决此查询,我需要在每个基础上找到最高余额。余额在一个表格中,基数在另一个表格中。

这是我现有的查询返回所有结果但我需要找到一种方法将其限制为每个baseID的1个最高结果。

SELECT o.names.name t.accounts.bidd.baseID, MAX(t.accounts.balance)
FROM order o, table(c.accounts) t
WHERE t.accounts.acctype = 'verified'
GROUP BY o.names.name, t.accounts.bidd.baseID;
  • accounts是一个嵌套表。

这是输出

      Name        accounts.BIDD.baseID        MAX(T.accounts.BALANCE)
 ---------------  ------------------------- ---------------------------
 Jerard            010                       1251.21 
 john              012                       3122.2 
 susan             012                       3022.2 
 fin               012                       3022.2 
 dan               010                       1751.21 

我想要显示的结果是计算每个baseID的最高余额,并且只显示该baseID的一条记录。

因此输出看起来只显示baseID 012的john,因为他有最高的。

任何正确方向的指针都会很棒。

1 个答案:

答案 0 :(得分:1)

我认为这个问题是"名称"柱。由于您有三个名称映射到一个基本ID(12),因此它将所有三个记录视为唯一记录并将它们分别分组而不是一起分组。 试着忽略"名称"选择查询中的列以及" Group-by"条款。

SELECT t.accounts.bidd.baseID, MAX(t.accounts.balance)
FROM order o, table(c.accounts) t
WHERE t.accounts.acctype = 'verified'
GROUP BY t.accounts.bidd.baseID;