gpt4 book ai didi

sql - 如何在Oracle中找到负最大值和正最小值?

转载 作者:行者123 更新时间:2023-12-03 14:35:34 29 4
gpt4 key购买 nike

我有一列 number .它有正值和负值。我需要获得 4 个值:正最大值、正最小值、负最大值、负最小值:

a) 要获得正最大值:我可以使用 Check out the Fiddle

select max(cola) from test;

b) 要获得负最小值:我可以使用 Check out the Fiddle
select min(cola) from test;

我在这里有两个问题:

1)现在我不确定如何获得其他两个值。指导我得到那个

2)与此同时,在尝试这个的同时,我又有了另一个疑问。当我有一些类型为 varchar2 的列时它有数字作为值(value)。我正在本专栏中执行上述操作。正最大值与上述相同。但是负最小值很奇怪。 Check Fiddle Here .为什么这里没有适当的隐式转换发生。有人请解释这背后的原因吗?

最佳答案

对于问题 1,您可以轻松地使用 case 来确定您对哪些值进行了最小值/最大值。例如。:

select max(case when cola >= 0 then cola end) max_positive,
min(case when cola >= 0 then cola end) min_positive,
max(case when cola < 0 then cola end) max_negative,
min(case when cola < 0 then cola end) min_negative
from test;

对于问题 2,当您对 varchar 进行最小/最大操作时,您将进行字符串比较,而不是数字比较。您必须将值显式转换为数字,因为 Oracle 不知道您希望进行隐式转换。无论如何,您不应该真正依赖隐式转换。例如。:
select max(case when to_number(cola) >= 0 then to_number(cola) end) max_positive,
min(case when to_number(cola) >= 0 then to_number(cola) end) min_positive,
max(case when to_number(cola) < 0 then to_number(cola) end) max_negative,
min(case when to_number(cola) < 0 then to_number(cola) end) min_negative
from test1;

Here's the SQLFiddle for both cases.

注意我已经明确地分离出负值和正值(我将 0 与正数粘在一起;您必须决定如何处理值为 0 的行!),以防万一没有负数或没有正数。

关于sql - 如何在Oracle中找到负最大值和正最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31830685/

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