簡體   English   中英

添加具有組最大值的列

[英]Add a column with the max value of the group

我想添加一個額外的列,其中每個組(ID)的最大值將出現。
表格如下所示:

select ID, VALUE from mytable

ID值
1 4
1 1
1 7
2 2
2 5
3 7
3 3

這是我想要得到的結果:

ID VALUE個最大值
1 4 7
1 1 7
1 7 7
2 2 5
2 5 5
3 7 7
3 3 7

提前謝謝你的幫助!

您先前的問題表明您正在使用SQL Server,在這種情況下,您可以使用窗口函數

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;

不需要在子選擇中使用GROUP BY。

select ID, VALUE, 
  (select MAX(VALUE) from mytable where ID = t.ID) as MaxValue
from mytable t

嘗試使用子選擇並分組,然后獲取該組的最大值:

select 
  ID, 
  VALUE, 
  (select MAX(VALUE) 
   from mytable 
   group by ID 
   having ID = t.ID
  ) as max_values
from mytable t

編輯:

我構建了一個SQL提琴 ,它表明我的解決方案有效,而且VDohnal是正確的並且不需要分組依據,因此我會投票支持他的答案。

使用此查詢。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM