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