基于Oracle SQL内容的选择

时间:2017-03-28 16:04:24

标签: sql database oracle

我有下表:

self.rooms.append(Room(id: id, name: name))

我想要的结果是:

 AGENT  CLIE
 -----------
 A         1
 B         1
 A         2
 B         2
 C         1

所以我想只显示最高等级的客户,如果存在,否则显示该条目。

对于A和B,有更高级别的客户端,但对于c,则没有。

我该如何做到这一点?

3 个答案:

答案 0 :(得分:0)

select agent, max(clie)
from your_table
group by agent

答案 1 :(得分:0)

假设此处“2”的排名优于“1”,则可以使用MAX函数:

SELECT
    AGENT, max(CLIE) 
FROM 
    table
GROUP BY 
    AGENT

(optional) ORDER BY AGENT

答案 2 :(得分:0)

正如其他人所提到的,如果您只想在输出中使用agent和最大clie,那么请使用简单聚合:

Select agent, max(clie)
From your_table
Group by agent

如果您有其他列,并且您希望输出中的那些列对应于最大clie的行,请使用窗口函数row_number(或rank如果您希望所有行都具有最大值clie为每个agent):

Select *
From (
  Select t.*,
    Row_number() over (
       Partition by agent
       Order by clie desc nulls last
    ) as rn
  From your_table t
  ) t
Where rn = 1;