Sql 返回多个值的总和和最大值对应的类别字段

Sql 返回多个值的总和和最大值对应的类别字段,sql,oracle,Sql,Oracle,我有以下数据 ID CATEGORY VALUE x A 10 x B 2 x C 1 y B 11 y A 6 z D 13 z E 0 我想按ID和类别进行分组,以便对单个ID求和值,返回的类别是ID组内相应的最大值 结果是这样的 ID CATEGORY VALUE x A 13 y B 17 z D

我有以下数据

ID  CATEGORY VALUE
x   A        10
x   B        2
x   C        1
y   B        11
y   A        6
z   D        13
z   E        0
我想按ID类别进行分组,以便对单个ID求和,返回的类别ID组内相应的最大

结果是这样的

ID  CATEGORY    VALUE
x   A           13
y   B           17
z   D           13
这在SQL中可能吗


谢谢

尝试窗口功能排名:

select id, category, value 
  from (
   select id, category, sum(value) over (partition by id) as value,
          rank() over (partition by id order by value desc) as rnk
    from mytable) t
where rnk=1;
如果有相同值的副本,则会同时显示这两个副本。(如果'x','B'的值为10):


如果两个最大值具有相同的
Id
,该怎么办?E.E.
(x,A,10)
(x,Z,10)
记录?没有考虑到这一点。我正在寻找的问题将不会有这样的场景,但这是一个有效的观点。大多数情况下,我会有一个具有一个较大值的类别,而其他类别的值比较起来会非常小或为零。如果我有两个最大值,我将返回两个类别。@e.shee如果您认为此答案是完美的,那么您应该标记并更新此答案。我已尝试更新并标记为已解决,但不断收到错误。稍后将重试。@e.shee您可能没有足够的声誉来升级投票,但您应该能够标记为answeredAgain,已尝试但收到消息:“出现错误-请重试您的请求”。@e.shee可能注销登录?
id  cat value
x   A   21
x   B   21
y   B   17
z   D   13