选择不带分组依据的最大值

问题描述 投票:-1回答:2

H!我需要帮助以获得每个ID的最大值。简单的表格如下所示,

ID        Value      
---------------
111        150         
112        110         
111        100         
113        120         
115        130     
111        180
112        190

我也想在输出中看到:

ID        Value      
---------------
111        180       
112        190        
111        180        
113        120        
115        130 
111        180
112        190

我不想按每个ID分组,我希望它们都在输出中。谁能帮忙?

mysql sql oracle
2个回答
0
投票

我认为您需要窗口功能:

select t.*, max(value) over (partition by id) as max_id
from t;

这回答了问题。我不确定示例数据与该问题有什么关系。


0
投票

如果完全不想使用MAX功能,则可以如下使用NOT EXISTS

SELECT ID, VALUE
FROM YOUR_TABLE Y
JOIN ( SELECT DISTINCT ID, VALUE
         FROM YOUR_TABLE T
        WHERE NOT EXISTS ( SELECT 1
                             FROM YOUR_TABLE TT
                            WHERE TT.ID = T.ID
                              AND TT.VALUE > T.VALUE
                         ) 
     ) R ON Y.ID = R.ID
© www.soinside.com 2019 - 2024. All rights reserved.