PostgreSQL - MIN 函数
PostgreSQL - MIN() 函数
Section titled “PostgreSQL - MIN() 函数”PostgreSQL 的 MIN() 函数是一个聚合函数,它从指定列的值集中返回最小值。它对于数据分析和报表至关重要。
要理解 MIN() 函数,请考虑以下 employees 表:
-- 示例 employees 表CREATE TABLE employees ( id INT PRIMARY KEY, name VARCHAR(50), department VARCHAR(50), salary NUMERIC(10, 2));
INSERT INTO employees VALUES(1, 'Paul', 'IT', 60000),(2, 'Allen', 'Engineering', 75000),(3, 'Teddy', 'IT', 62000),(4, 'Mark', 'Engineering', 95000),(5, 'David', 'Sales', 85000),(6, 'Kim', 'Sales', 82000),(7, 'James', 'IT', 58000);要查找所有员工中的最低工资,您可以使用以下命令:
SELECT MIN(salary) AS lowest_salary FROM employees;上述语句将产生以下结果:
lowest_salary--------------- 58000.00(1 row)MIN() 函数与 GROUP BY 子句结合使用
Section titled “MIN() 函数与 GROUP BY 子句结合使用”MIN() 更强大的用法是查找不同行组的最小值。例如,要查找每个部门内的最低工资,您可以将 MIN() 与 GROUP BY 子句一起使用。
SELECT department, MIN(salary) AS lowest_salary_in_deptFROM employeesGROUP BY departmentORDER BY department;此查询按部门对员工进行分组,然后查找每个组的最低工资,产生以下结果:
department | lowest_salary_in_dept-------------+------------------------- Engineering | 75000.00 IT | 58000.00 Sales | 82000.00(3 rows)MIN() 与其他聚合函数结合使用
Section titled “MIN() 与其他聚合函数结合使用”您可以将 MIN() 与 MAX() 和 AVG() 等其他聚合函数一起使用,以便在单个查询中获取数据的综合摘要。
SELECT department, MIN(salary) AS min_sal, MAX(salary) AS max_sal, AVG(salary)::numeric(10,2) AS avg_salFROM employeesGROUP BY department;此查询提供了按部门划分的详细工资明细:
department | min_sal | max_sal | avg_sal-------------+----------+----------+----------- Engineering | 75000.00 | 95000.00 | 85000.00 IT | 58000.00 | 62000.00 | 60000.00 Sales | 82000.00 | 85000.00 | 83500.00(3 rows)- NULL 值:
MIN()函数会忽略NULL值。如果一个组中的所有值都是NULL,它将返回NULL。 - 数据类型:
MIN()可以用于数字、字符串和日期/时间数据类型。对于字符串,它返回按字母顺序排列的第一个值。 - 性能:在大型表上,通过在被评估的列上创建 B-tree 索引,可以显著提高
MIN()查询的性能。数据库通常只需读取索引的第一个条目即可找到最小值。
postgresql_useful_functions.htm