gpt4 book ai didi

sql - 如何使用 Oracle SQL 从 2 个值中获取最小值

转载 作者:行者123 更新时间:2023-12-04 02:07:35 24 4
gpt4 key购买 nike

我有 2 个表 TAB1 和 TAB2。两者都有 3 列,每个 SEGMENT、LEVEL 和 VALUE。以下是两个表中的数据:

TAB1

SEGMENT LEVEL VALUE
----------------------------------
SEG1 1 1000
SEG1 2 900
SEG1 3 800
SEG2 1 4000
SEG2 2 3000
SEG2 3 1000
SEG3 1 5000
SEG3 2 3500
SEG3 3 2200

TAB2

SEGMENT LEVEL VALUE
----------------------------------
SEG1 1 2000
SEG1 2 1800
SEG1 3 1200
SEG2 1 3000
SEG2 3 2500
SEG4 1 10000
SEG4 2 8100
SEG4 3 2900

正如您所看到的,我在表格和一些分割市场中共有四个分割市场 SEG1、SEG2、SEG3 和 SEG4,两个表格中均未显示风险级别。对于 SEGMENT 和 LEVEL 列的组合,我希望两个表中的 VALUE 最小。查询的输出应该是这样的:

SEGMENT       LEVEL        VALUE
----------------------------------
SEG1 1 1000
SEG1 2 900
SEG1 3 800
SEG2 1 3000
SEG2 2 3000
SEG2 3 1000
SEG3 1 5000
SEG3 2 3500
SEG3 3 2200
SEG4 1 10000
SEG4 2 8100
SEG4 3 2900

我尝试通过 Full outer join 实现它,但输出不是我预期的:

SELECT t1.SEGMENT, t1.LEVEL, t2.SEGMENT, t2.LEVEL, LEAST(t1.VALUE, t2.VALUE)
FROM TAB1 t1
FULL OUTER JOIN TAB2 t2
ON t1.SEGMENT = t2.SEGMENT
AND t1.LEVEL = t2.LEVEL;

非常感谢任何帮助。数据库是 Oracle。

最佳答案

试试这个,

select  segment,level,min(value) value from (
select segment,level,value from tab1
UNION ALL
select segment,level,value from tab2
) d group by segment,level

关于sql - 如何使用 Oracle SQL 从 2 个值中获取最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41888142/

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