我想添加一个额外的列,其中将显示每个组(ID)的最大值 表格如下:
select ID, VALUE from mytable
ID VALUE
1 4
1 1
1 7
2 2
2 5
3 7
3 3
以下是我想得到的结果:
ID VALUE max_values
1 4 7
1 1 7
1 7 7
2 2 5
2 5 5
3 7 7
3 3 7
提前感谢您的帮助!
答案 0 :(得分:4)
您之前的问题表明您使用的是SQL Server,在这种情况下您可以使用window functions:
SELECT ID,
Value,
MaxValue = MAX(Value) OVER(PARTITION BY ID)
FROM mytable;
根据您对第一个求和值的另一个答案的评论,您可能需要使用子查询来实际获得此值:
SELECT ID,
Date,
Value,
MaxValue = MAX(Value) OVER(PARTITION BY ID)
FROM ( SELECT ID, Date, Value = SUM(Value)
FROM mytable
GROUP BY ID, Date
) AS t;
答案 1 :(得分:2)
在subselect中无需使用GROUP BY。
select ID, VALUE,
(select MAX(VALUE) from mytable where ID = t.ID) as MaxValue
from mytable t
答案 2 :(得分:0)
尝试使用子选择和分组依据,然后获取该组的MAX:
select
ID,
VALUE,
(select MAX(VALUE)
from mytable
group by ID
having ID = t.ID
) as max_values
from mytable t
编辑:
我构建了一个SQL fiddle,这表明我的解决方案有效,但VDohnal也是正确的,并且不需要小组,所以我会回答他的答案。
答案 3 :(得分:0)
使用此查询。
SELECT ID
,value
,(
SELECT MAX(VALUE)
FROM GetMaxValue gmv
WHERE gmv.ID = gmv1.ID
GROUP BY ID
) as max_value
FROM GetMaxValue gmv1
ORDER BY ID