SQL学习(三):greatest()和least()函数(最大值和最小值)

GREATEST和LEAST函数的语法:
GREATEST(value1, value2, ...);
LEAST(value1,value2,...);

参数可能具有混合数据类型。以下比较规则适用于这两个函数:

  1. 如果任何参数为NULL,则两个函数都将立即返回NULL,而不进行任何比较。
  2. 如果在INT或REAL上下文中使用函数,或者所有参数都是整数值或REAL值,那么它们将分别作为INT和REAL来比较。
  3. 如果参数由数字和字符串组成,则函数将它们作为数字进行比较。
  4. 如果至少一个参数是非二进制(字符)字符串,则函数将将参数作为非二进制字符串进行比较。
  5. 在所有其他情况下,函数将参数作为二进制字符串进行比较

例:
创建一个新表 test:

CREATE TABLE IF NOT EXISTS test (
company_id INT PRIMARY KEY,
q1 DECIMAL(19 , 2 ),
q2 DECIMAL(19 , 2 ),
q3 DECIMAL(19 , 2 ),
q4 DECIMAL(19 , 2 )
);
插入语句:

INSERT INTO test(company_id,q1,q2,q3,q4)
VALUES (1,100,120,110,130),
(2,250,260,300,310);

获得每个公司的最高和最低收入,可使用GREATEST和LOWEST:

SELECT
company_id,
LEAST(q1, q2, q3, q4) low,
GREATEST(q1, q2, q3, q4) high
FROM
test;

结果:

±-----------±-------±-------+
| company_id | low | high |
±-----------±-------±-------+
| 1 | 100.00 | 130.00 |
| 2 | 250.00 | 310.00 |
±-----------±-------±-------+
2 rows in set

注:如果任何参数为NULL,则GREATEST和LEAST函数都返回NULL,这可能不是我们想要的。为了避免这种情况,可用case when 进行数据的过滤,给出一个指定的值,也可以使用IFNULL函数将NULL视为零来执行数字比较。

  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值