我有以下数据返回之和对应的类别字段最大值的
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中可能吗?
感谢
我有以下数据返回之和对应的类别字段最大值的
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 cat value
x A 21
x B 21
y B 17
z D 13
完美,谢谢! –
@ e.shee如果你认为这个答案是完美的,那么你应该标记和upvote这个答案。 –
我试图upvote并标记为已解决但仍然收到错误。稍后再试。 –
如果您有*两个*最大值和相同的'Id',该怎么办? E.E. '(x,A,10)'和'(x,Z,10)'记录? –
没有考虑到这一点。我所看到的问题不会有这种情况,但这是一个有效的观点。大多数情况下,我将拥有一个具有较大价值的类别,而其他类别的比较或零将是非常小的。如果我确实有两个最大值,我会返回这两个类别。 –