SQL Aggregate Functions
An aggregate function is a function that performs a calculation on a set of values, and returns a single value.
Aggregate functions are often used with the GROUP BY
clause of the SELECT
statement. The GROUP BY
clause splits the result-set into groups of values and the aggregate function can be used to return a single value for each group.
The most commonly used SQL aggregate functions are:
MIN()
- returns the smallest value within the selected columnMAX()
- returns the largest value within the selected columnCOUNT()
- returns the number of rows in a setSUM()
- returns the total sum of a numerical columnAVG()
- returns the average value of a numerical column
Aggregate functions ignore null values (except for COUNT()
).
SQL MIN() and MAX() Functions​
The MIN()
function returns the smallest value of the selected column.
The MAX()
function returns the largest value of the selected column.
MIN Example​
Find the lowest price in the Price column:
SELECT MIN(Price)
FROM Products;
MAX Example​
Find the highest price in the Price column:
SELECT MAX(Price)
FROM Products;
Syntax​
SELECT MIN(_column_name_) FROM _table_name_ WHERE _condition_;
SELECT MAX(_column_name_) FROM _table_name_ WHERE _condition_;
Demo Database​
Below is a selection from the Products table used in the examples:
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
Set Column Name (Alias)​
When you use MIN()
or MAX()
, the returned column will not have a descriptive name. To give the column a descriptive name, use the AS
keyword:
Example​
SELECT MIN(Price) AS SmallestPrice
FROM Products;
Use MIN() with GROUP BY​
Here we use the MIN()
function and the GROUP BY
clause, to return the smallest price for each category in the Products table:
Example​
SELECT MIN(Price) AS SmallestPrice, CategoryID
FROM Products
GROUP BY CategoryID;
You will learn more about the [GROUP BY](sql_groupby.asp)
clause later in this tutorial.
======= description: "An aggregate function is a function that performs a calculation on a set of values, and returns a single value." tags: [sql, dbms, database]​
About SQL Aggregates​
An aggregate function is a function that performs a calculation on a set of values and returns a single value. These functions are commonly used with the GROUP BY
clause in SQL to group rows that share a common attribute.
The most commonly used SQL aggregate functions include:
- MIN(): Returns the smallest value within a selected column.
- MAX(): Returns the largest value within a selected column.
- COUNT(): Returns the number of rows in a set.
- SUM(): Returns the total sum of a numerical column.
- AVG(): Returns the average value of a numerical column.
Aggregate functions ignore null values, except for COUNT()
.
Common SQL Aggregate Functions​
MIN()​
- Description: Returns the smallest value within the selected column.
- Syntax:
MIN(column_name)
- Example:
SELECT MIN(salary) FROM employees;
MAX()​
- Description: Returns the largest value within the selected column.
- Syntax:
MAX(column_name)
- Example:
SELECT MAX(salary) FROM employees;
COUNT()​
- Description: Returns the number of rows in a set.
- Syntax:
COUNT(column_name)
-- Counts non-null values in the specified columnCOUNT(*)
-- Counts all rows
- Example:
SELECT COUNT(*) FROM employees;
SUM()​
- Description: Returns the total sum of a numerical column.
- Syntax:
SUM(column_name)
- Example:
SELECT SUM(salary) FROM employees;
AVG()​
- Description: Returns the average value of a numerical column.
- Syntax:
AVG(column_name)
- Example:
SELECT AVG(salary) FROM employees;
Using Aggregate Functions with GROUP BY​
Aggregate functions can be combined with the GROUP BY
clause to group rows that have the same values in specified columns.
-
Syntax:
SELECT column1, AGGREGATE_FUNCTION(column2)
FROM table_name
GROUP BY column1; -
Example:
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;