我需要帮助获取每个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都在输出中。
答案 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