gpt4 book ai didi

sql - 在同一列中查找多个元素的最大值

转载 作者:行者123 更新时间:2023-12-03 19:13:50 24 4
gpt4 key购买 nike

表 A 给出了 A.i、A.j 和 A.val。 A 制作一个 3x3 矩阵。

我需要从 A.val 中找到 Max(A.val) 的 ij, i+1j, ij+1,i-1j, ij-1(如果存在)。但是,我找不到任何解决方案来查找同一列的特定元素的最大值。请帮忙。

样本:

i   |   j   |   val
0 0 7
0 1 5
0 2 8
1 0 10
1 1 7
1 2 7
2 0 2
2 1 0
2 2 5

答案输出:

我 | j |值
0       0       10
0 1 8
0 2 8
1 0 10
1 1 10
1 2 8
2 0 10
2 1 7
2 2 7

最佳答案

我能想到的唯一合理的解释是你想要四个相邻单元格中的最大值加上当前单元格。假设您的数据库支持 greatest() ,因为这简化了问题:

select t.*,
greatest(val,
lag(val, 1, val) over (order by i),
lead(val, 1, val) over (order by i),
lag(val, 1, val) over (order by j),
lead(val, 1, val) over (order by j)
) as neighborly_maximum
from t;

您也可以使用左连接执行此操作:
select t.*,
greatest(val,
coalesce(tup.val, val),
coalesce(tdown.val, val),
coalesce(tleft.val, val),
coalesce(tright.val, val)
) as neighborly_maximum
from t left join
t tup
on tup.i = t.i and tup.j = t.j + 1 left join
t tdown
on tdown.i = t.i and tdown.j = t.j - 1 left join
t tleft
on tleft.i = t.i - 1 and tleft.j = t.j left join
t tright
on tright.i = t.i + 1 and tright.j = t.j;

关于sql - 在同一列中查找多个元素的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54718893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com