Select 与总和最高的主 ID 相关联的子类别 ID
Select a subcategory ID to associate with a primary ID based off which has the highest sum
我有一个主 ID ID1 和一个辅助 ID ID2。 ID1 可以与多个 ID2 值关联,反之亦然。我想在每个 ID1 下按 ID2 对第三个值列求和,并拉出总和最高的 ID2。源数据的结构如下:
ID1 ID2 Value
1 10 1
1 10 2
1 20 1
2 10 1
2 30 2
我希望最终结果如下所示:
ID1 ID2
1 10
2 30
到目前为止,我只有一个不起作用的查询:
SELECT ID1,
CASE WHEN ID2_Value = MAX(ID2_Value) THEN ID2
ELSE NULL
END AS PrimaryID2
FROM ( SELECT ID1,
ID2,
SUM(Value) AS ID2_Value
FROM SOME_SCHEMA
GROUP BY ID1, ID2
) AS ID2_Value
GROUP BY ID1;
我的查询现在不起作用,因为它希望我在 GROUP BY
语句中包含 ID2_Value,但我不想按这些值进行分组。
我会用 row_number()
:
select id1, id2
from (select id1, id2, sum(value) as sumv,
row_number() over (partition by id1 order by sum(value) desc) as seqnum
from t
group by id1, id2
) t
where seqnum = 1;
我有一个主 ID ID1 和一个辅助 ID ID2。 ID1 可以与多个 ID2 值关联,反之亦然。我想在每个 ID1 下按 ID2 对第三个值列求和,并拉出总和最高的 ID2。源数据的结构如下:
ID1 ID2 Value
1 10 1
1 10 2
1 20 1
2 10 1
2 30 2
我希望最终结果如下所示:
ID1 ID2
1 10
2 30
到目前为止,我只有一个不起作用的查询:
SELECT ID1,
CASE WHEN ID2_Value = MAX(ID2_Value) THEN ID2
ELSE NULL
END AS PrimaryID2
FROM ( SELECT ID1,
ID2,
SUM(Value) AS ID2_Value
FROM SOME_SCHEMA
GROUP BY ID1, ID2
) AS ID2_Value
GROUP BY ID1;
我的查询现在不起作用,因为它希望我在 GROUP BY
语句中包含 ID2_Value,但我不想按这些值进行分组。
我会用 row_number()
:
select id1, id2
from (select id1, id2, sum(value) as sumv,
row_number() over (partition by id1 order by sum(value) desc) as seqnum
from t
group by id1, id2
) t
where seqnum = 1;