LEAST与GREATEST函数
学习在多个值中快速取最小或最大值,简化条件逻辑。 · 难度:入门 · +15XP
SQL LEAST 与 GREATEST —— 取多值中的最小和最大
LEAST()和GREATEST()是SQL中非常实用的函数。LEAST返回参数列表中的最小值,GREATEST返回最大值。它们可以比较多个列的值或常量。
基本语法
SELECT LEAST(value1, value2, value3, ...) FROM table;
SELECT GREATEST(value1, value2, value3, ...) FROM table;
实战示例
假设有一张产品表,记录了三个供应商的报价:
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(50),
supplier_a_price DECIMAL(10,2),
supplier_b_price DECIMAL(10,2),
supplier_c_price DECIMAL(10,2)
);
INSERT INTO products VALUES
(1, '螺丝', 0.50, 0.45, 0.55),
(2, '螺母', 0.30, 0.35, 0.28),
(3, '垫片', 0.20, 0.18, 0.22);
-- 找出每个产品的最低价和最高价
SELECT
name,
LEAST(supplier_a_price, supplier_b_price, supplier_c_price) AS 最低价,
GREATEST(supplier_a_price, supplier_b_price, supplier_c_price) AS 最高价
FROM products;
处理NULL值
注意:如果任意参数为NULL,LEAST和GREATEST都返回NULL。需要用COALESCE处理:
SELECT LEAST(COALESCE(a, 9999), COALESCE(b, 9999), COALESCE(c, 9999)) FROM t;
动手练习
- 基础练习:创建一张学生成绩表(语文、数学、英语三列),用LEAST和GREATEST找出每个学生的最高分和最低分科目。
- 进阶应用:用LEAST/GREATEST结合CASE判断最高分和最低分分别来自哪一科。
- 项目实战:在电商系统中用LEAST找出多仓库发货中离用户最近的仓库(比较各仓库到用户的距离)。
接下来学什么?
下一课学习NULL值的处理——COALESCE和NULLIF函数。