选择最大值而不分组依据

时间:2020-05-26 11:31:00

标签: sql

我需要帮助获取每个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分组,我希望所有ID都在输出中。

3 个答案:

答案 0 :(得分:1)

我认为您需要窗口功能:

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

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

答案 1 :(得分:0)

如果您根本不想使用MAX函数,则可以按以下方式使用NOT EXISTS

SELECT Y.ID, R.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

答案 2 :(得分:0)

您还可以在SELECT列表中关联子查询:

SELECT
    id,
    (SELECT
        max(value)
    FROM
        tbl t2
    WHERE
        t2.id = t1.id) AS value
FROM
    tbl t1